Ruby学習の方法とブロックの定義と使用
Rubyのメソッドは他のプログラミング言語の関数と似ています.主に1つ以上の繰り返し文を1つのユニットにバンドルするために使用されます.名前は小文字で始まり、大文字で始まると定数とみなされる可能性があります.一方、メソッドは呼び出し前に定義する必要があります.そうしないと、Rubyは未定義のメソッド呼び出し異常を発生します.方法の定義を見てみましょう.
呼び出しの仕方も簡単です.次のようになります.
パラメータ付きメソッドを使用する最大の欠点は、メソッドを呼び出すときにパラメータの数を覚えることです.たとえば、3つのパラメータを受け入れる方法に2つのパラメータしか渡さない場合、Rubyはエラーを表示します.次の例を見てみましょう.
Rubyの各メソッドはデフォルトで値を返します.この返される値は、最後の文の値です.メソッドを見てみましょう.
このメソッドを呼び出すと、最後に宣言された変数kが返されます.
Rubyメソッドには、1つ以上の値を返すreturn文があり、2つ以上の式が与えられると、これらの値を含む配列が戻り値になります.式が指定されていない場合、nilは戻り値になります.例を見てみましょう.
2つのパラメータを持つメソッドを宣言した場合、呼び出し時に2つのパラメータを渡す必要があります.この場合、Rubyはパラメータの数を可変と宣言できます.次の例を見てみましょう.
上記のコードでは、パラメータtestを受け入れる方法sampleを宣言しました.しかし、このパラメータは変数パラメータです.これは、パラメータが異なる数の変数を持つことができることを意味します.
メソッドがクラスの外部に定義され、デフォルトではprivate、クラスではpublicと表記されます.デフォルトの可視性とprivateタグはモジュールのpublicまたはprivateで変更できます.クラスにアクセスする方法は、まずクラスをインスタンス化する必要があります.その後、オブジェクトを使用してクラスの任意のメンバーにアクセスできます.また、Rubyはインスタンス化せずにアクセスできる方法を提供しています.クラスメソッドを宣言してアクセスする例を見てみましょう.
我々はすでに方法を知っています.dateはどのように宣言されますか.クラス名の後にポイント番号、ポイント番号の後にメソッド名が付いて宣言されます.クラスメソッドに直接アクセスできます.以下に示します.
このメソッドにアクセスするには、クラスAccountsのオブジェクトを作成する必要はありません.
メソッドまたはグローバル変数に別名を付けるために使用されるalias文を見てみましょう.別名はメソッドボディ内で定義できません.メソッドが書き換えられても、メソッドの別名はメソッドの現在の定義を保持します.番号付きグローバル変数($1,$2,...)別名をつけることは禁止されています.組み込まれたグローバル変数を書き換えると、深刻な問題が発生する可能性があります.構文フォーマットを見てみましょう.
例は次のとおりです.
上記のコードでは、barの別名をfoo、$&の別名を$MATCHと定義しています.
メソッド定義をキャンセルし、メソッド本体に表示されないundef文もあります.undefとaliasを使用すると、クラスのインタフェースは親から独立して変更できますが、独自の内部メソッド呼び出し時にプログラムを破壊する可能性があります.実例を見てください.
上記の説明が終わったら、次のブロックの概念を見てみましょう.ブロックは、大量のコードから構成される. は、ブロックに名前を付ける必要があります. ブロックのコードは、常にカッコ{}内に含まれます. ブロックは、常に同じ名前の関数から呼び出される.これは、ブロック名がtestの場合、関数testを使用してブロックを呼び出すことを意味します. は、yield文を使用してブロックを呼び出すことができる.
構文は次のとおりです.
まずyield文の例を見てみましょう.
パラメータ付きyield文をインスタンスとして渡すこともできます.
上記のコードでは、yield文の後にパラメータが付いており、複数のパラメータを渡すこともできます.ブロックでは、2つの縦線の間に変数を配置してパラメータを受け入れることができます.したがって、上記のコードでは、yield 5文はtestブロックに値5をパラメータとして伝達する.
次の文を見てみましょう.
上記のコードでは、値5は変数iで受信されます.次に、次のputs文を観察します.
上記のコードは「ブロック5内にいる」と出力されます.複数のパラメータを渡す場合は、yield文は次のようになります.
この場合、ブロックは以下のようになります.
パラメータはカンマで区切りましょう.
通常、yield文を使用して、同じ名前のメソッドからブロックを呼び出します.例は次のとおりです.
上記のコードはブロックを実現する最も簡単な方法であるが、方法の最後のパラメータが前に&を持っている場合、私たちはこの方法にブロックを渡すことができ、このブロックは最後のパラメータに付与することができ、*と&が同時にパラメータリストに表示される場合、&は後ろに置いて、例を見てください.
各Rubyソースファイルは、ファイルがロードされたときに実行されるコードブロック(BEGINブロック)と、プログラムの実行が完了した後に実行されるコードブロック(ENDブロック)とを宣言することができ、1つのプログラムは、複数のBEGINおよびENDブロックを含むことができる.BEGINブロックは、それらが現れる順に実行される.ENDブロックは、それらが現れる逆の順序で実行され、次の例を見てみましょう.
はい、今回の記録はここまでです.
いい感じだったら、応援よろしくね..
#
def method_name
expr..
end
#
def method_name (var1, var2)
expr..
end
# ,
def method_name (var1=value1, var2=value2)
expr..
end
呼び出しの仕方も簡単です.次のようになります.
#
method_name
#
method_name 25, 30
パラメータ付きメソッドを使用する最大の欠点は、メソッドを呼び出すときにパラメータの数を覚えることです.たとえば、3つのパラメータを受け入れる方法に2つのパラメータしか渡さない場合、Rubyはエラーを表示します.次の例を見てみましょう.
#!/usr/bin/ruby
# -*- coding: UTF-8 -*-
def test(a1="Ruby", a2="Perl")
puts " #{a1}"
puts " #{a2}"
end
test "C", "C++"
test
Rubyの各メソッドはデフォルトで値を返します.この返される値は、最後の文の値です.メソッドを見てみましょう.
def test
i = 100
j = 10
k = 0
end
このメソッドを呼び出すと、最後に宣言された変数kが返されます.
Rubyメソッドには、1つ以上の値を返すreturn文があり、2つ以上の式が与えられると、これらの値を含む配列が戻り値になります.式が指定されていない場合、nilは戻り値になります.例を見てみましょう.
#!/usr/bin/ruby
# -*- coding: UTF-8 -*-
def test
i = 100
j = 200
k = 300
return i, j, k
end
var = test
puts var
2つのパラメータを持つメソッドを宣言した場合、呼び出し時に2つのパラメータを渡す必要があります.この場合、Rubyはパラメータの数を可変と宣言できます.次の例を見てみましょう.
#!/usr/bin/ruby
# -*- coding: UTF-8 -*-
def sample (*test)
puts " #{test.length}"
for i in 0...test.length
puts " #{test[i]}"
end
end
sample "Zara", "6", "F"
sample "Mac", "36", "M", "MCA"
上記のコードでは、パラメータtestを受け入れる方法sampleを宣言しました.しかし、このパラメータは変数パラメータです.これは、パラメータが異なる数の変数を持つことができることを意味します.
メソッドがクラスの外部に定義され、デフォルトではprivate、クラスではpublicと表記されます.デフォルトの可視性とprivateタグはモジュールのpublicまたはprivateで変更できます.クラスにアクセスする方法は、まずクラスをインスタンス化する必要があります.その後、オブジェクトを使用してクラスの任意のメンバーにアクセスできます.また、Rubyはインスタンス化せずにアクセスできる方法を提供しています.クラスメソッドを宣言してアクセスする例を見てみましょう.
class Accounts
def reading_charge
end
def Accounts.return_date
end
end
我々はすでに方法を知っています.dateはどのように宣言されますか.クラス名の後にポイント番号、ポイント番号の後にメソッド名が付いて宣言されます.クラスメソッドに直接アクセスできます.以下に示します.
Accounts.return_date
このメソッドにアクセスするには、クラスAccountsのオブジェクトを作成する必要はありません.
メソッドまたはグローバル変数に別名を付けるために使用されるalias文を見てみましょう.別名はメソッドボディ内で定義できません.メソッドが書き換えられても、メソッドの別名はメソッドの現在の定義を保持します.番号付きグローバル変数($1,$2,...)別名をつけることは禁止されています.組み込まれたグローバル変数を書き換えると、深刻な問題が発生する可能性があります.構文フォーマットを見てみましょう.
alias
alias
例は次のとおりです.
alias foo bar
alias $MATCH $&
上記のコードでは、barの別名をfoo、$&の別名を$MATCHと定義しています.
メソッド定義をキャンセルし、メソッド本体に表示されないundef文もあります.undefとaliasを使用すると、クラスのインタフェースは親から独立して変更できますが、独自の内部メソッド呼び出し時にプログラムを破壊する可能性があります.実例を見てください.
#
#undef
# bar
undef bar
上記の説明が終わったら、次のブロックの概念を見てみましょう.
構文は次のとおりです.
block_name{
statement1
statement2
..........
}
まずyield文の例を見てみましょう.
#!/usr/bin/ruby
# -*- coding: UTF-8 -*-
def test
puts " test "
yield
puts " test "
yield
end
test {puts " "}
パラメータ付きyield文をインスタンスとして渡すこともできます.
#!/usr/bin/ruby
# -*- coding: UTF-8 -*-
def test
yield 5
puts " test "
yield 100
end
test {|i| puts " #{i} "}
上記のコードでは、yield文の後にパラメータが付いており、複数のパラメータを渡すこともできます.ブロックでは、2つの縦線の間に変数を配置してパラメータを受け入れることができます.したがって、上記のコードでは、yield 5文はtestブロックに値5をパラメータとして伝達する.
次の文を見てみましょう.
test {|i| puts " #{i} "}
上記のコードでは、値5は変数iで受信されます.次に、次のputs文を観察します.
puts " #{i} "
上記のコードは「ブロック5内にいる」と出力されます.複数のパラメータを渡す場合は、yield文は次のようになります.
yield a, b
この場合、ブロックは以下のようになります.
test {|a, b| statement}
パラメータはカンマで区切りましょう.
通常、yield文を使用して、同じ名前のメソッドからブロックを呼び出します.例は次のとおりです.
#!/usr/bin/ruby
def test
yield
end
test{ puts "Hello world"}
上記のコードはブロックを実現する最も簡単な方法であるが、方法の最後のパラメータが前に&を持っている場合、私たちはこの方法にブロックを渡すことができ、このブロックは最後のパラメータに付与することができ、*と&が同時にパラメータリストに表示される場合、&は後ろに置いて、例を見てください.
#!/usr/bin/ruby
def test(&block)
block.call
end
test { puts "Hello World!"}
各Rubyソースファイルは、ファイルがロードされたときに実行されるコードブロック(BEGINブロック)と、プログラムの実行が完了した後に実行されるコードブロック(ENDブロック)とを宣言することができ、1つのプログラムは、複数のBEGINおよびENDブロックを含むことができる.BEGINブロックは、それらが現れる順に実行される.ENDブロックは、それらが現れる逆の順序で実行され、次の例を見てみましょう.
#!/usr/bin/ruby
BEGIN {
# BEGIN
puts "BEGIN "
}
END {
# END
puts "END "
}
# MAIN
puts "MAIN "
はい、今回の記録はここまでです.
いい感じだったら、応援よろしくね..