ライブラリ
- ビルトイン (10)
検索結果
先頭5件
-
Enumerable
# chunk {|elt| . . . } -> Enumerator (18145) -
要素を前から順にブロックで評価し、その結果によって 要素をチャンクに分けた(グループ化した)要素を持つ Enumerator を返します。
...素を持つ配列のペアを各要素とします。
そのため、eachだと以下のようになります。
enum.chunk {|elt| key }.each {|key, ary| ... }
enum.chunk(initial_state) {|elt, state| key }.each {|key, ary| ... }
例として、整数列を連続する奇数/偶数に分ける......例を見てみます。
「n.even?」が変換するところで区切られているのがわかるでしょう。
[3,1,4,1,5,9,2,6,5,3,5].chunk {|n|
n.even?
}.each {|even, ary|
p [even, ary]
}
#=> [false, [3, 1]]
# [true, [4]]
# [false, [1, 5, 9]]
# [true, [2, 6]]
#......数えています。
# line.ord は先頭の文字のコードポイントを返す
open("/usr/share/dict/words", "r:iso-8859-1") {|f|
f.chunk {|line| line.ord }.each {|ch, lines| p [ch.chr, lines.length] }
}
#=> ["\n", 1]
# ["A", 1327]
# ["B", 1372]
# ["C", 1507]
# ["D"... -
Enumerable
# chunk(initial _ state) {|elt , state| . . . } -> Enumerator (18145) -
要素を前から順にブロックで評価し、その結果によって 要素をチャンクに分けた(グループ化した)要素を持つ Enumerator を返します。
...素を持つ配列のペアを各要素とします。
そのため、eachだと以下のようになります。
enum.chunk {|elt| key }.each {|key, ary| ... }
enum.chunk(initial_state) {|elt, state| key }.each {|key, ary| ... }
例として、整数列を連続する奇数/偶数に分ける......例を見てみます。
「n.even?」が変換するところで区切られているのがわかるでしょう。
[3,1,4,1,5,9,2,6,5,3,5].chunk {|n|
n.even?
}.each {|even, ary|
p [even, ary]
}
#=> [false, [3, 1]]
# [true, [4]]
# [false, [1, 5, 9]]
# [true, [2, 6]]
#......数えています。
# line.ord は先頭の文字のコードポイントを返す
open("/usr/share/dict/words", "r:iso-8859-1") {|f|
f.chunk {|line| line.ord }.each {|ch, lines| p [ch.chr, lines.length] }
}
#=> ["\n", 1]
# ["A", 1327]
# ["B", 1372]
# ["C", 1507]
# ["D"... -
Enumerable
# slice _ before {|elt| bool } -> Enumerator (7) -
パターンがマッチした要素、もしくはブロックが真を返した要素から 次にマッチする手前までを チャンク化(グループ化)したものを繰り返す Enumerator を 返します。
...の手前で分割していきます。
最初の要素の評価は無視されます。
各チャンクは配列として表現されます。
Enumerable#map のようなメソッドを使うこともできます。
# 偶数要素をチャンクの先頭と見なす
[0,2,4,1,2,4,5,3,1,4,2......f.slice_before(emp: true) {|line,h|
prevemp = h[:emp]
h[:emp] = line == "\n"
prevemp && line.start_with?("From ")
}.each {|mail|
mail.pop if mail.last == "\n"
pp mail
}
}
@param initial_state 状態を保持するオブジェクト
@see Enumerable#chunk... -
Enumerable
# slice _ before(initial _ state) {|elt , state| bool } -> Enumerator (7) -
パターンがマッチした要素、もしくはブロックが真を返した要素から 次にマッチする手前までを チャンク化(グループ化)したものを繰り返す Enumerator を 返します。
...の手前で分割していきます。
最初の要素の評価は無視されます。
各チャンクは配列として表現されます。
Enumerable#map のようなメソッドを使うこともできます。
# 偶数要素をチャンクの先頭と見なす
[0,2,4,1,2,4,5,3,1,4,2......f.slice_before(emp: true) {|line,h|
prevemp = h[:emp]
h[:emp] = line == "\n"
prevemp && line.start_with?("From ")
}.each {|mail|
mail.pop if mail.last == "\n"
pp mail
}
}
@param initial_state 状態を保持するオブジェクト
@see Enumerable#chunk... -
Enumerable
# slice _ before(pattern) -> Enumerator (7) -
パターンがマッチした要素、もしくはブロックが真を返した要素から 次にマッチする手前までを チャンク化(グループ化)したものを繰り返す Enumerator を 返します。
...の手前で分割していきます。
最初の要素の評価は無視されます。
各チャンクは配列として表現されます。
Enumerable#map のようなメソッドを使うこともできます。
# 偶数要素をチャンクの先頭と見なす
[0,2,4,1,2,4,5,3,1,4,2......f.slice_before(emp: true) {|line,h|
prevemp = h[:emp]
h[:emp] = line == "\n"
prevemp && line.start_with?("From ")
}.each {|mail|
mail.pop if mail.last == "\n"
pp mail
}
}
@param initial_state 状態を保持するオブジェクト
@see Enumerable#chunk...
