Ruby学習ノート2(方法、ブロック、モジュール)
1565 ワード
方法
Rubyのメソッドは他の言語の関数であり,名前は定数として解釈されないように小文字で始まるべきである.パラメータは有無可能であり、デフォルト値があってもなくてもよい.各メソッドにはデフォルトの戻り値があり、最後の文の値です.
可変数のパラメータを入力するには、次の手順に従います.
aliasとundefの使い方はまだよくわかりません
ブロック
ブロックは{}に含まれるコードです.このコードは他の場所から呼び出すことができます.ブロックのようにパラメータを渡すこともできます.1つ以上のパラメータです.
関数パラメータとしての別の呼び出し方法:
パラメータの前に&は、関数としてブロックを受信するパラメータを表します.このパラメータは一般に最後に置かれ,特に*パラメータが同時に現れる場合である.
BEGINとENDブロックを宣言できます.これは、ドキュメントがロードされ、プログラムが実行された後に呼び出されます.
モジュール
モジュールの存在の目的は主に1つのネーミング空間を定義して、このネーミング空間の中の方法と定数が他の場所と衝突しないようにすることです.モジュール定義とクラス定義は似ており、モジュールメソッドとクラスメソッド定義も似ており、呼び出しモジュールメソッドはモジュール名ポイントのメソッド名です.呼び出しモジュール定数は、モジュール名の2つのコロン定数名を使用します.
require文は、既存のモジュールを参照するために使用されます.includeはクラスにモジュールを埋め込むために使用されます.
この例は奇妙な方法でSample対A,Bの多重継承を実現した.
Rubyのメソッドは他の言語の関数であり,名前は定数として解釈されないように小文字で始まるべきである.パラメータは有無可能であり、デフォルト値があってもなくてもよい.各メソッドにはデフォルトの戻り値があり、最後の文の値です.
def test(a1="Ruby", a2="Perl")
puts " #{a1}"
puts " #{a2}"
end
test "C", "C++"
test
可変数のパラメータを入力するには、次の手順に従います.
def sample (*test)
end
aliasとundefの使い方はまだよくわかりません
ブロック
ブロックは{}に含まれるコードです.このコードは他の場所から呼び出すことができます.ブロックのようにパラメータを渡すこともできます.1つ以上のパラメータです.
def test
yield 5
puts " test "
yield 100
end
test {|i| puts " #{i} "}
関数パラメータとしての別の呼び出し方法:
def test(&block)
block.call
end
test { puts "Hello World!"}
パラメータの前に&は、関数としてブロックを受信するパラメータを表します.このパラメータは一般に最後に置かれ,特に*パラメータが同時に現れる場合である.
BEGINとENDブロックを宣言できます.これは、ドキュメントがロードされ、プログラムが実行された後に呼び出されます.
モジュール
モジュールの存在の目的は主に1つのネーミング空間を定義して、このネーミング空間の中の方法と定数が他の場所と衝突しないようにすることです.モジュール定義とクラス定義は似ており、モジュールメソッドとクラスメソッド定義も似ており、呼び出しモジュールメソッドはモジュール名ポイントのメソッド名です.呼び出しモジュール定数は、モジュール名の2つのコロン定数名を使用します.
module Trig
PI = 3.141592654
def Trig.sin(x)
# ..
end
def Trig.cos(x)
# ..
end
end
require文は、既存のモジュールを参照するために使用されます.includeはクラスにモジュールを埋め込むために使用されます.
module A
def a1
end
def a2
end
end
module B
def b1
end
def b2
end
end
class Sample
include A
include B
def s1
end
end
samp=Sample.new
samp.a1
samp.a2
samp.b1
samp.b2
samp.s1
この例は奇妙な方法でSample対A,Bの多重継承を実現した.