Array#&
arrayクラスに使用できる論理積(AND)を求めるメソッドです。
両方に存在する要素が返されます。
>> a1 = [1,2,3] => [1, 2, 3] >> a2 = [4,2,3] => [4, 2, 3] >> >> p a1 & a2 [2, 3] => [2, 3] >>
self
selfは「自分自身を返すオブジェクト」です。
使用される場所によって返す値が異なってきます。
■クラス内で使用される場合→self=そのクラス
■メソッド内で使用される場合→self=そのメソッドを実行するオブジェクト(レシーバ)
Array#each_cons(cnt)
Array#each_cons(cnt)メソッドは、selfから引数(cnt)ずつ要素を取り出しブロックに渡します。
ブロック引数には配列で渡されます。
sliceとは出力結果が異なるので注意します。
>> (1..10).each_cons(3) {|arr| p arr }
[1, 2, 3]
[2, 3, 4]
[3, 4, 5]
[4, 5, 6]
[5, 6, 7]
[6, 7, 8]
[7, 8, 9]
[8, 9, 10]
=> 1..10
>> (1..10).each_slice(3) {|arr| p arr }
[1, 2, 3]
[4, 5, 6]
[7, 8, 9]
[10]
=> 1..10
>>
範囲オブジェクト
.. 終端を含む
... 終端を含まない
マイナスは後ろから要素を指定できる。
>> puts str[4..6] efg => nil >> puts str[-3..6] fg => nil >> puts str[4...-1] efg => nil >> puts str[4..0] => nil >> puts str[-4...7] efg => nil