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