関連するキーワード
ライブラリ
- ビルトイン (153)
キーワード
- chunk (4)
- collect (4)
-
collect
_ concat (4) - cycle (6)
- detect (6)
-
drop
_ while (6) -
each
_ cons (6) -
each
_ entry (4) -
each
_ slice (6) -
each
_ with _ index (6) -
each
_ with _ object (4) -
enum
_ cons (2) -
enum
_ slice (2) -
enum
_ with _ index (1) - find (6)
-
find
_ all (6) -
find
_ index (6) -
flat
_ map (4) -
group
_ by (6) - map (4)
-
max
_ by (6) -
min
_ by (6) -
minmax
_ by (6) - partition (6)
- reject (6)
-
reverse
_ each (6) - select (6)
-
slice
_ before (6) -
sort
_ by (6) -
take
_ while (6)
検索結果
先頭5件
-
Enumerable
# chunk {|elt| . . . } -> Enumerator (125) -
要素を前から順にブロックで評価し、その結果によって 要素をチャンクに分けた(グループ化した)要素を持つ Enumerator を返します。
...)要素を持つ
Enumerator を返します。
ブロックの評価値が同じ値が続くものを一つのチャンクとして
取り扱います。すなわち、ブロックの評価値が一つ前と
異なる所でチャンクが区切られます。
返り値の Enumerator は各チャ... -
Enumerable
# chunk(initial _ state) {|elt , state| . . . } -> Enumerator (125) -
要素を前から順にブロックで評価し、その結果によって 要素をチャンクに分けた(グループ化した)要素を持つ Enumerator を返します。
...)要素を持つ
Enumerator を返します。
ブロックの評価値が同じ値が続くものを一つのチャンクとして
取り扱います。すなわち、ブロックの評価値が一つ前と
異なる所でチャンクが区切られます。
返り値の Enumerator は各チャ... -
Enumerable
# slice _ before {|elt| bool } -> Enumerator (120) -
パターンがマッチした要素、もしくはブロックが真を返した要素から 次にマッチする手前までを チャンク化(グループ化)したものを繰り返す Enumerator を 返します。
...くはブロックが真を返した要素から
次にマッチする手前までを
チャンク化(グループ化)したものを繰り返す 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 (120) -
パターンがマッチした要素、もしくはブロックが真を返した要素から 次にマッチする手前までを チャンク化(グループ化)したものを繰り返す Enumerator を 返します。
...くはブロックが真を返した要素から
次にマッチする手前までを
チャンク化(グループ化)したものを繰り返す 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 (120) -
パターンがマッチした要素、もしくはブロックが真を返した要素から 次にマッチする手前までを チャンク化(グループ化)したものを繰り返す Enumerator を 返します。
...くはブロックが真を返した要素から
次にマッチする手前までを
チャンク化(グループ化)したものを繰り返す 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
# cycle(n=nil) -> Enumerator (114) -
Enumerable オブジェクトの各要素を n 回 or 無限回(n=nil)繰り返し ブロックを呼びだします。
...Enumerable オブジェクトの各要素を n 回 or 無限回(n=nil)繰り返し
ブロックを呼びだします。
n に 0 もしくは負の値を渡した場合は何もしません。
繰り返しが最後まで終了した場合(つまりbreakなどで中断しなかった場合)
は nil......を返します。
このメソッドは内部の配列に各要素を保存しておくため、
一度 Enumerable の終端に到達した後に自分自身を変更しても
このメソッドの動作に影響を与えません。
a = ["a", "b", "c"]
a.cycle {|x| puts x } # print, a, b, c,......# print, a, b, c, a, b, c.
ブロックを省略した場合は、n 回 or 無限回 enum の各要素を
繰り返す Enumerator を返します。
@return ブロックを指定しなかった場合は、Enumerator を返します。
レシーバが空の場合は nil を返します。... -
Enumerable
# each _ with _ object(obj) -> Enumerator (114) -
与えられた任意のオブジェクトと要素をブロックに渡し繰り返し、最初に与えられたオブジェクトを返します。
...返しをして、最初に与えたオブジェクトを
最後に返す Enumerator を返します。
@param obj 任意のオブジェクトを指定します。
evens = (1..10).each_with_object([]) {|i, a| a << i*2 }
# => [2, 4, 6, 8, 10, 12, 14, 16, 18, 20]
@see Enumerator#with_object... -
Enumerable
# collect -> Enumerator (109) -
各要素に対してブロックを評価した結果を全て含む配列を返します。
...列を返します。
ブロックを省略した場合、上で説明した繰り返しを実行し、その結果として
得られる配列を返すような Enumerator オブジェクトを返します。
例:
# すべて 3 倍にする
p [1, 2, 3].map {|n| n * 3 } # => [3, 6, 9]... -
Enumerable
# collect _ concat -> Enumerator (109) -
各要素をブロックに渡し、その返り値を連結した配列を返します。
...返り値は基本的に配列を返すべきです。
ブロックを省略した場合は、ブロックを受けとり
上で説明した評価をし、その結果の配列を返す
Enumerator オブジェクトを返します。
[[1,2], [3,4]].flat_map{|i| i.map{|j| j*2}} # => [2,4,6,8]... -
Enumerable
# detect(ifnone = nil) -> Enumerator (109) -
要素に対してブロックを評価した値が真になった最初の要素を返します。
...ロックを省略した場合は、各要素に対しブロックを真になるまで評価し、最初に
真になった値を返すような Enumerator を返します。
@arg ifnone call メソッドを持つオブジェクト (例えば Proc) を指定します。
例:
# 最初の 3... -
Enumerable
# find(ifnone = nil) -> Enumerator (109) -
要素に対してブロックを評価した値が真になった最初の要素を返します。
...ロックを省略した場合は、各要素に対しブロックを真になるまで評価し、最初に
真になった値を返すような Enumerator を返します。
@arg ifnone call メソッドを持つオブジェクト (例えば Proc) を指定します。
例:
# 最初の 3... -
Enumerable
# find _ all -> Enumerator (109) -
各要素に対してブロックを評価した値が真であった要素を全て含む配列を 返します。真になる要素がひとつもなかった場合は空の配列を返します。
...あった要素を全て含む配列を
返します。真になる要素がひとつもなかった場合は空の配列を返します。
ブロックを省略した場合は、各要素に対しブロックを評価し
真になった値の配列を返すような Enumerator を返します。... -
Enumerable
# flat _ map -> Enumerator (109) -
各要素をブロックに渡し、その返り値を連結した配列を返します。
...返り値は基本的に配列を返すべきです。
ブロックを省略した場合は、ブロックを受けとり
上で説明した評価をし、その結果の配列を返す
Enumerator オブジェクトを返します。
[[1,2], [3,4]].flat_map{|i| i.map{|j| j*2}} # => [2,4,6,8]... -
Enumerable
# map -> Enumerator (109) -
各要素に対してブロックを評価した結果を全て含む配列を返します。
...列を返します。
ブロックを省略した場合、上で説明した繰り返しを実行し、その結果として
得られる配列を返すような Enumerator オブジェクトを返します。
例:
# すべて 3 倍にする
p [1, 2, 3].map {|n| n * 3 } # => [3, 6, 9]... -
Enumerable
# select -> Enumerator (109) -
各要素に対してブロックを評価した値が真であった要素を全て含む配列を 返します。真になる要素がひとつもなかった場合は空の配列を返します。
...あった要素を全て含む配列を
返します。真になる要素がひとつもなかった場合は空の配列を返します。
ブロックを省略した場合は、各要素に対しブロックを評価し
真になった値の配列を返すような Enumerator を返します。... -
Enumerable
# cycle(n=nil) -> Enumerable :: Enumerator (108) -
Enumerable オブジェクトの各要素を n 回 or 無限回(n=nil)繰り返し ブロックを呼びだします。
...Enumerable オブジェクトの各要素を n 回 or 無限回(n=nil)繰り返し
ブロックを呼びだします。
n に 0 もしくは負の値を渡した場合は何もしません。
繰り返しが最後まで終了した場合(つまりbreakなどで中断しなかった場合)
は nil......を返します。
このメソッドは内部の配列に各要素を保存しておくため、
一度 Enumerable の終端に到達した後に自分自身を変更しても
このメソッドの動作に影響を与えません。
a = ["a", "b", "c"]
a.cycle {|x| puts x } # print, a, b, c,......a, b, c,.. forever.
a.cycle(2) {|x| puts x } # print, a, b, c, a, b, c.
@return ブロックを指定しなかった場合は、Enumerable::Enumerator を返します。
レシーバが空の場合は nil を返します。... -
Enumerable
# drop _ while -> Enumerable :: Enumerator (108) -
ブロックを評価して最初に偽となった要素の手前の要素まで捨て、 残りの要素を配列として返します。
...クを評価して最初に偽となった要素の手前の要素まで捨て、
残りの要素を配列として返します。
ブロックを指定しなかった場合は、Enumerable::Enumerator を返します。
a = [1, 2, 3, 4, 5, 0]
a.drop_while {|i| i < 3 } # => [3, 4, 5, 0]... -
Enumerable
# drop _ while -> Enumerator (108) -
ブロックを評価して最初に偽となった要素の手前の要素まで捨て、 残りの要素を配列として返します。
...った要素の手前の要素まで捨て、
残りの要素を配列として返します。
ブロックを指定しなかった場合は、Enumerator を返します。
a = [1, 2, 3, 4, 5, 0]
a.drop_while {|i| i < 3 } # => [3, 4, 5, 0]... -
Enumerable
# each _ cons(n) -> Enumerator (108) -
要素を重複ありで n 要素ずつに区切り、 ブロックに渡して繰り返します。
...つに区切り、
ブロックに渡して繰り返します。
ブロックを省略した場合は重複ありで
n 要素ずつ繰り返す Enumerator を返します。
@param n ブロックに渡す要素の数です。正の整数を与えます。
要素数より大きな数を......与えると、ブロックは一度も実行されません。
例:
(1..10).each_cons(3){|v| p v }
# => [1, 2, 3]
# [2, 3, 4]
# [3, 4, 5]
# [4, 5, 6]
# [5, 6, 7]
# [6, 7, 8]
# [7, 8, 9]
# [8, 9, 10]
@see Enumerable#each_slice... -
Enumerable
# each _ entry -> Enumerator (108) -
ブロックを各要素に一度ずつ適用します。
...列として渡されます。
class Foo
include Enumerable
def each
yield 1
yield 1,2
end
end
Foo.new.each_entry{|o| print o, " -- "}
# => 1 -- [1, 2] --
ブロックを省略した場合は Enumerator が返されます。
@see Enumerable#slice_before... -
Enumerable
# each _ slice(n) -> Enumerator (108) -
n 要素ずつブロックに渡して繰り返します。
...ブロックを省略した場合は
n 要素ずつ繰り返す Enumerator を返します。
@arg n 区切る要素数を示す整数です。
例:
(1..10).each_slice(3) {|a| p a}
# => [1, 2, 3]
# [4, 5, 6]
# [7, 8, 9]
# [10]
@see Enumerable#each_cons... -
Enumerable
# each _ with _ index -> Enumerator (108) -
要素とそのインデックスをブロックに渡して繰り返します。
...繰り返します。
self を返します。
ブロックを省略した場合は、
要素とそのインデックスを繰り返すような
Enumerator を返します。
例:
[5, 10, 15].each_with_index do |n, idx|
p [n, idx]
end
# => [5, 0]
# [10, 1]... -
Enumerable
# find _ index -> Enumerable :: Enumerator (108) -
要素を先頭から順にブロックに渡して評価し、最初に真になった要素のインデックスを返します。 一つも真にならなければ nil を返します。
...を返します。
一つも真にならなければ nil を返します。
(1..10).find_index {|i| i % 5 == 0 and i % 7 == 0 } #=> nil
(1..100).find_index {|i| i % 5 == 0 and i % 7 == 0 } #=> 34
ブロックを指定しなかった場合は、Enumerable::Enumerator を返します。... -
Enumerable
# find _ index -> Enumerator (108) -
要素を先頭から順にブロックに渡して評価し、最初に真になった要素のインデックスを返します。 一つも真にならなければ nil を返します。
...デックスを返します。
一つも真にならなければ nil を返します。
(1..10).find_index {|i| i % 5 == 0 and i % 7 == 0 } #=> nil
(1..100).find_index {|i| i % 5 == 0 and i % 7 == 0 } #=> 34
ブロックを指定しなかった場合は、Enumerator を返します。... -
Enumerable
# group _ by -> Enumerator (108) -
ブロックを評価した結果をキー、対応する要素の配列を値とするハッシュを返します。
...ロックを評価した結果をキー、対応する要素の配列を値とするハッシュを返します。
(1..6).group_by {|i| i%3} #=> {0=>[3, 6], 1=>[1, 4], 2=>[2, 5]}
ブロックを省略した場合は、最後に Hash を返す
Enumerator オブジェクトを返します。... -
Enumerable
# max _ by -> Enumerator (108) -
各要素を順番にブロックに渡して実行し、 その評価結果を <=> で比較して、 最大であった値に対応する元の要素を返します。
...。
Enumerable#max と Enumerable#max_by の
違いは Enumerable#sort と Enumerable#sort_by の違いと同じです。
ブロックを省略した場合は、各要素を順番にブロックに渡して評価し、
その結果が最小となる値に対応する要素を返す Enumerator を......返します。
@see Enumerable#sort_by... -
Enumerable
# min _ by -> Enumerator (108) -
各要素を順番にブロックに渡して評価し、 その評価結果を <=> で比較して、 最小であった値に対応する元の要素を返します。
...各要素を順番にブロックに渡して評価し、
その結果が最小となる値に対応する要素を返す Enumerator を
返します。
Enumerable#min と Enumerable#min_by の
違いは Enumerable#sort と Enumerable#sort_by の違いと同じです。
@see Enumerable#sort_by... -
Enumerable
# minmax _ by -> Enumerator (108) -
Enumerable オブジェクトの各要素をブロックに渡して評価し、その結果を <=> で比較して 最小の要素と最大の要素を要素とするサイズ 2 の配列を返します。
...
Enumerable オブジェクトの各要素をブロックに渡して評価し、その結果を <=> で比較して
最小の要素と最大の要素を要素とするサイズ 2 の配列を返します。
該当する要素が複数存在する場合、どの要素を返すかは不定です。......Enumerable#minmax と Enumerable#minmax_by の
違いは sort と sort_by の違いと同じです。
詳細は Enumerable#sort_by を参照してください。
a = %w(albatross dog horse)
a.minmax_by {|x| x.length } #=> ["dog", "albatross"]
[].minmax_by{} # => [nil, nil]
ブロッ......クを省略した場合は、Enumerator オブジェクトを
返します。
@see Enumerable#sort_by... -
Enumerable
# partition -> Enumerator (108) -
各要素を、ブロックの条件を満たす要素と満たさない要素に分割します。 各要素に対してブロックを評価して、その値が真であった要素の配列と、 偽であった要素の配列の 2 つを配列に入れて返します。
...ブロックを評価し、
上のようにその値が真であった要素の配列と、
偽であった要素の配列のペアを返すような Enumerator を
返します。
例:
[10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0].partition {|i| i % 3 == 0 }
#=> [[9, 6, 3, 0], [10, 8, 7, 5, 4, 2, 1]]... -
Enumerable
# reject -> Enumerator (108) -
各要素に対してブロックを評価し、 その値が偽であった要素を集めた新しい配列を返します。 条件を反転させた select です。
...ブロックを省略した場合は、各要素に対しブロックを評価し
偽になった値の配列を返すような Enumerator を返します。
例:
# 偶数を除外する (奇数を集める)
[1, 2, 3, 4, 5, 6].reject {|i| i % 2 == 0 } # => [1, 3, 5]
@see Enumerable#select... -
Enumerable
# reverse _ each -> Enumerator (108) -
逆順に各要素に対してブロックを評価します。
...評価します。
内部で各要素を保持した配列を作ります。
ブロックを省略した場合は、各要素を逆順に辿る
Enumerator を返します。... -
Enumerable
# sort _ by -> Enumerator (108) -
ブロックの評価結果を <=> メソッドで比較することで、self を昇 順にソートします。ソートされた配列を新たに生成して返します。 つまり、以下とほぼ同じ動作をします。
...class Array
def sort_by
self.map {|i| [yield(i), i] }.
sort {|a, b| a[0] <=> b[0] }.
map {|i| i[1]}
end
end
Enumerable#sort と比較して sort_by が優れている点として、
比較条件が複雑な場合の速度が挙げられます。
sort_by を使......}
$n = 0
ary.sort {|a,b| a.count <=> b.count }
p $n # => 18200
$n = 0
ary.sort_by {|v| v.count }
p $n # => 1000
Enumerable#sort_by は安定ではありません (unstable sort)。
ただし、sort_by を以下のように使うと安定なソートを実装でき......果が同じ要素は元の順序通りに並ぶソートを
「安定なソート (stable sort)」と言います。
ブロックを省略した場合は、各要素をブロックで評価した値でソートした
配列を返すような Enumerator を返します。
@see Enumerable#sort... -
Enumerable
# take _ while -> Enumerator (108) -
Enumerable オブジェクトの要素を順に偽になるまでブロックで評価します。 最初に偽になった要素の手前の要素までを配列として返します。
...
Enumerable オブジェクトの要素を順に偽になるまでブロックで評価します。
最初に偽になった要素の手前の要素までを配列として返します。
a = [1, 2, 3, 4, 5, 0]
a.take_while {|i| i < 3 } # => [1, 2]
ブロックを省略した場合は、En... -
Enumerable
# detect(ifnone = nil) -> Enumerable :: Enumerator (103) -
要素に対してブロックを評価した値が真になった最初の要素を返します。
要素に対してブロックを評価した値が真になった最初の要素を返します。
真になる要素が見つからず、ifnone も指定されていないときは nil を返します。
真になる要素が見つからず、ifnone が指定されているときは ifnone を call した結果を返します。
@arg ifnone call メソッドを持つオブジェクト (例えば Proc) を指定します。
例:
# 最初の 3 の倍数を探す
p [1, 2, 3, 4, 5].find {|i| i % 3 == 0 } # => 3
p [2, 2, 2, 2, 2].find {|i| i... -
Enumerable
# each _ cons(n) -> Enumerable :: Enumerator (103) -
要素を重複ありで n 要素ずつに区切り、 ブロックに渡して繰り返します。
...素数より大きな数を与えると、ブロックは一度も実行されません。
例:
(1..10).each_cons(3){|v| p v }
# => [1, 2, 3]
# [2, 3, 4]
# [3, 4, 5]
# [4, 5, 6]
# [5, 6, 7]
# [6, 7, 8]
# [7, 8, 9]
# [8, 9, 10]
@see Enumerable#each_slice... -
Enumerable
# each _ slice(n) -> Enumerable :: Enumerator (103) -
n 要素ずつブロックに渡して繰り返します。
...1.9.1 以降ではなくなっています。
代わりに each_slice を使ってください。
@arg n 区切る要素数を示す整数です。
例:
(1..10).each_slice(3) {|a| p a}
# => [1, 2, 3]
# [4, 5, 6]
# [7, 8, 9]
# [10]
@see Enumerable#each_cons... -
Enumerable
# each _ with _ index -> Enumerable :: Enumerator (103) -
要素とそのインデックスをブロックに渡して繰り返します。
要素とそのインデックスをブロックに渡して繰り返します。
self を返します。
例:
[5, 10, 15].each_with_index do |n, idx|
p [n, idx]
end
# => [5, 0]
# [10, 1]
# [15, 2] -
Enumerable
# enum _ cons(n) -> Enumerable :: Enumerator (103) -
要素を重複ありで n 要素ずつに区切り、 ブロックに渡して繰り返します。
...素数より大きな数を与えると、ブロックは一度も実行されません。
例:
(1..10).each_cons(3){|v| p v }
# => [1, 2, 3]
# [2, 3, 4]
# [3, 4, 5]
# [4, 5, 6]
# [5, 6, 7]
# [6, 7, 8]
# [7, 8, 9]
# [8, 9, 10]
@see Enumerable#each_slice... -
Enumerable
# enum _ slice(n) -> Enumerable :: Enumerator (103) -
n 要素ずつブロックに渡して繰り返します。
...1.9.1 以降ではなくなっています。
代わりに each_slice を使ってください。
@arg n 区切る要素数を示す整数です。
例:
(1..10).each_slice(3) {|a| p a}
# => [1, 2, 3]
# [4, 5, 6]
# [7, 8, 9]
# [10]
@see Enumerable#each_cons... -
Enumerable
# enum _ with _ index -> Enumerable :: Enumerator (103) -
要素とそのインデックスをブロックに渡して繰り返します。
要素とそのインデックスをブロックに渡して繰り返します。
self を返します。
例:
[5, 10, 15].each_with_index do |n, idx|
p [n, idx]
end
# => [5, 0]
# [10, 1]
# [15, 2] -
Enumerable
# find(ifnone = nil) -> Enumerable :: Enumerator (103) -
要素に対してブロックを評価した値が真になった最初の要素を返します。
要素に対してブロックを評価した値が真になった最初の要素を返します。
真になる要素が見つからず、ifnone も指定されていないときは nil を返します。
真になる要素が見つからず、ifnone が指定されているときは ifnone を call した結果を返します。
@arg ifnone call メソッドを持つオブジェクト (例えば Proc) を指定します。
例:
# 最初の 3 の倍数を探す
p [1, 2, 3, 4, 5].find {|i| i % 3 == 0 } # => 3
p [2, 2, 2, 2, 2].find {|i| i... -
Enumerable
# find _ all -> Enumerable :: Enumerator (103) -
各要素に対してブロックを評価した値が真であった要素を全て含む配列を 返します。真になる要素がひとつもなかった場合は空の配列を返します。
各要素に対してブロックを評価した値が真であった要素を全て含む配列を
返します。真になる要素がひとつもなかった場合は空の配列を返します。 -
Enumerable
# select -> Enumerable :: Enumerator (103) -
各要素に対してブロックを評価した値が真であった要素を全て含む配列を 返します。真になる要素がひとつもなかった場合は空の配列を返します。
各要素に対してブロックを評価した値が真であった要素を全て含む配列を
返します。真になる要素がひとつもなかった場合は空の配列を返します。 -
Enumerable
# group _ by -> Enumerable :: Enumerator (102) -
ブロックを評価した結果をキー、対応する要素の配列を値とするハッシュを返します。
ブロックを評価した結果をキー、対応する要素の配列を値とするハッシュを返します。
(1..6).group_by {|i| i%3} #=> {0=>[3, 6], 1=>[1, 4], 2=>[2, 5]} -
Enumerable
# max _ by -> Enumerable :: Enumerator (102) -
各要素を順番にブロックに渡して実行し、 その評価結果を <=> で比較して、 最大であった値に対応する元の要素を返します。
...。
要素が存在しないときは nil を返します。
該当する要素が複数存在する場合、どの要素を返すかは不定です。
Enumerable#max と Enumerable#max_by の
違いは Enumerable#sort と Enumerable#sort_by の違いと同じです。
@see Enumerable#sort_by... -
Enumerable
# min _ by -> Enumerable :: Enumerator (102) -
各要素を順番にブロックに渡して評価し、 その評価結果を <=> で比較して、 最小であった値に対応する元の要素を返します。
...要素が存在しないときは nil を返します。
該当する要素が複数存在する場合、どの要素を返すかは不定です。
Enumerable#min と Enumerable#min_by の
違いは Enumerable#sort と Enumerable#sort_by の違いと同じです。
@see Enumerable#sort_by... -
Enumerable
# minmax _ by -> Enumerable :: Enumerator (102) -
Enumerable オブジェクトの各要素をブロックに渡して評価し、その結果を <=> で比較して 最小の要素と最大の要素を要素とするサイズ 2 の配列を返します。
...
Enumerable オブジェクトの各要素をブロックに渡して評価し、その結果を <=> で比較して
最小の要素と最大の要素を要素とするサイズ 2 の配列を返します。
該当する要素が複数存在する場合、どの要素を返すかは不定です。......inmax と Enumerable#minmax_by の
違いは sort と sort_by の違いと同じです。
詳細は Enumerable#sort_by を参照してください。
a = %w(albatross dog horse)
a.minmax_by {|x| x.length } #=> ["dog", "albatross"]
[].minmax_by{} # => [nil, nil]
@see Enumerable#sort_by... -
Enumerable
# partition -> Enumerable :: Enumerator (102) -
各要素を、ブロックの条件を満たす要素と満たさない要素に分割します。 各要素に対してブロックを評価して、その値が真であった要素の配列と、 偽であった要素の配列の 2 つを配列に入れて返します。
各要素を、ブロックの条件を満たす要素と満たさない要素に分割します。
各要素に対してブロックを評価して、その値が真であった要素の配列と、
偽であった要素の配列の 2 つを配列に入れて返します。
例:
[10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0].partition {|i| i % 3 == 0 }
#=> [[9, 6, 3, 0], [10, 8, 7, 5, 4, 2, 1]] -
Enumerable
# reject -> Enumerable :: Enumerator (102) -
各要素に対してブロックを評価し、 その値が偽であった要素を集めた新しい配列を返します。 条件を反転させた select です。
...対してブロックを評価し、
その値が偽であった要素を集めた新しい配列を返します。
条件を反転させた select です。
例:
# 偶数を除外する (奇数を集める)
[1, 2, 3, 4, 5, 6].reject {|i| i % 2 == 0 } # => [1, 3, 5]
@see Enumerable#select... -
Enumerable
# reverse _ each -> Enumerable :: Enumerator (102) -
逆順に各要素に対してブロックを評価します。
逆順に各要素に対してブロックを評価します。
内部で各要素を保持した配列を作ります。 -
Enumerable
# sort _ by -> Enumerable :: Enumerator (102) -
ブロックの評価結果を <=> メソッドで比較することで、self を昇 順にソートします。ソートされた配列を新たに生成して返します。 つまり、以下とほぼ同じ動作をします。
...class Array
def sort_by
self.map {|i| [yield(i), i] }.
sort {|a, b| a[0] <=> b[0] }.
map {|i| i[1]}
end
end
Enumerable#sort と比較して sort_by が優れている点として、
比較条件が複雑な場合の速度が挙げられます。
sort_by を使......}
$n = 0
ary.sort {|a,b| a.count <=> b.count }
p $n # => 18200
$n = 0
ary.sort_by {|v| v.count }
p $n # => 1000
Enumerable#sort_by は安定ではありません (unstable sort)。
ただし、sort_by を以下のように使うと安定なソートを実装でき......ます。
i = 0
ary.sort_by {|v| [v, i += 1] }
※ 比較結果が同じ要素は元の順序通りに並ぶソートを
「安定なソート (stable sort)」と言います。
@see Enumerable#sort... -
Enumerable
# take _ while -> Enumerable :: Enumerator (102) -
Enumerable オブジェクトの要素を順に偽になるまでブロックで評価します。 最初に偽になった要素の手前の要素までを配列として返します。
...
Enumerable オブジェクトの要素を順に偽になるまでブロックで評価します。
最初に偽になった要素の手前の要素までを配列として返します。
a = [1, 2, 3, 4, 5, 0]
a.take_while {|i| i < 3 } # => [1, 2]... -
Enumerable
# cycle(n=nil) {|obj| . . . } -> object | nil (14) -
Enumerable オブジェクトの各要素を n 回 or 無限回(n=nil)繰り返し ブロックを呼びだします。
...Enumerable オブジェクトの各要素を n 回 or 無限回(n=nil)繰り返し
ブロックを呼びだします。
n に 0 もしくは負の値を渡した場合は何もしません。
繰り返しが最後まで終了した場合(つまりbreakなどで中断しなかった場合)
は nil......を返します。
このメソッドは内部の配列に各要素を保存しておくため、
一度 Enumerable の終端に到達した後に自分自身を変更しても
このメソッドの動作に影響を与えません。
a = ["a", "b", "c"]
a.cycle {|x| puts x } # print, a, b, c,......# print, a, b, c, a, b, c.
ブロックを省略した場合は、n 回 or 無限回 enum の各要素を
繰り返す Enumerator を返します。
@return ブロックを指定しなかった場合は、Enumerator を返します。
レシーバが空の場合は nil を返します。... -
Enumerable
# each _ with _ object(obj) {|(*args) , memo _ obj| . . . } -> object (14) -
与えられた任意のオブジェクトと要素をブロックに渡し繰り返し、最初に与えられたオブジェクトを返します。
...返しをして、最初に与えたオブジェクトを
最後に返す Enumerator を返します。
@param obj 任意のオブジェクトを指定します。
evens = (1..10).each_with_object([]) {|i, a| a << i*2 }
# => [2, 4, 6, 8, 10, 12, 14, 16, 18, 20]
@see Enumerator#with_object... -
Enumerable
# collect {|item| . . . } -> [object] (9) -
各要素に対してブロックを評価した結果を全て含む配列を返します。
...列を返します。
ブロックを省略した場合、上で説明した繰り返しを実行し、その結果として
得られる配列を返すような Enumerator オブジェクトを返します。
例:
# すべて 3 倍にする
p [1, 2, 3].map {|n| n * 3 } # => [3, 6, 9]... -
Enumerable
# collect _ concat {| obj | block } -> Array (9) -
各要素をブロックに渡し、その返り値を連結した配列を返します。
...返り値は基本的に配列を返すべきです。
ブロックを省略した場合は、ブロックを受けとり
上で説明した評価をし、その結果の配列を返す
Enumerator オブジェクトを返します。
[[1,2], [3,4]].flat_map{|i| i.map{|j| j*2}} # => [2,4,6,8]... -
Enumerable
# detect(ifnone = nil) {|item| . . . } -> object (9) -
要素に対してブロックを評価した値が真になった最初の要素を返します。
...ロックを省略した場合は、各要素に対しブロックを真になるまで評価し、最初に
真になった値を返すような Enumerator を返します。
@arg ifnone call メソッドを持つオブジェクト (例えば Proc) を指定します。
例:
# 最初の 3... -
Enumerable
# find(ifnone = nil) {|item| . . . } -> object (9) -
要素に対してブロックを評価した値が真になった最初の要素を返します。
...ロックを省略した場合は、各要素に対しブロックを真になるまで評価し、最初に
真になった値を返すような Enumerator を返します。
@arg ifnone call メソッドを持つオブジェクト (例えば Proc) を指定します。
例:
# 最初の 3... -
Enumerable
# find _ all {|item| . . . } -> [object] (9) -
各要素に対してブロックを評価した値が真であった要素を全て含む配列を 返します。真になる要素がひとつもなかった場合は空の配列を返します。
...あった要素を全て含む配列を
返します。真になる要素がひとつもなかった場合は空の配列を返します。
ブロックを省略した場合は、各要素に対しブロックを評価し
真になった値の配列を返すような Enumerator を返します。... -
Enumerable
# flat _ map {| obj | block } -> Array (9) -
各要素をブロックに渡し、その返り値を連結した配列を返します。
...返り値は基本的に配列を返すべきです。
ブロックを省略した場合は、ブロックを受けとり
上で説明した評価をし、その結果の配列を返す
Enumerator オブジェクトを返します。
[[1,2], [3,4]].flat_map{|i| i.map{|j| j*2}} # => [2,4,6,8]... -
Enumerable
# map {|item| . . . } -> [object] (9) -
各要素に対してブロックを評価した結果を全て含む配列を返します。
...列を返します。
ブロックを省略した場合、上で説明した繰り返しを実行し、その結果として
得られる配列を返すような Enumerator オブジェクトを返します。
例:
# すべて 3 倍にする
p [1, 2, 3].map {|n| n * 3 } # => [3, 6, 9]...
