Ruby学習ノート2(方法、ブロック、モジュール)

1565 ワード

方法
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の多重継承を実現した.