るりまサーチ

最速Rubyリファレンスマニュアル検索!
94件ヒット [1-94件を表示] (0.013秒)

別のキーワード

  1. matrix map
  2. _builtin map
  3. _builtin flat_map
  4. set map!
  5. array map!

ライブラリ

キーワード

検索結果

Enumerable#map -> Enumerator (15109.0)

各要素に対してブロックを評価した結果を全て含む配列を返します。

...列を返します。

ブロックを省略した場合、上で説明した繰り返しを実行し、その結果として
得られる配列を返すような Enumerator オブジェクトを返します。

例:
# すべて 3 倍にする
p [1, 2, 3].map {|n| n * 3 } # => [3, 6, 9]...

Enumerable#map {|item| ... } -> [object] (15109.0)

各要素に対してブロックを評価した結果を全て含む配列を返します。

...列を返します。

ブロックを省略した場合、上で説明した繰り返しを実行し、その結果として
得られる配列を返すような Enumerator オブジェクトを返します。

例:
# すべて 3 倍にする
p [1, 2, 3].map {|n| n * 3 } # => [3, 6, 9]...

Enumerable#flat_map -> Enumerator (3115.0)

各要素をブロックに渡し、その返り値を連結した配列を返します。

...返り値は基本的に配列を返すべきです。

ブロックを省略した場合は、ブロックを受けとり
上で説明した評価をし、その結果の配列を返す
Enumerator オブジェクトを返します。

[[1,2], [3,4]].flat_map{|i| i.map{|j| j*2}} # => [2,4,6,8]...

Enumerable#flat_map {| obj | block } -> Array (3115.0)

各要素をブロックに渡し、その返り値を連結した配列を返します。

...返り値は基本的に配列を返すべきです。

ブロックを省略した場合は、ブロックを受けとり
上で説明した評価をし、その結果の配列を返す
Enumerator オブジェクトを返します。

[[1,2], [3,4]].flat_map{|i| i.map{|j| j*2}} # => [2,4,6,8]...

Enumerable#lazy -> Enumerator::Lazy (31.0)

自身を lazy な Enumerator に変換したものを返します。

...のメソッドが遅延評価を行う (つまり、配列ではな
くEnumeratorを返す) ように再定義されています。

* map/collect
* flat_map/collect_concat
* select/find_all
* reject
* grep
* take, take_while
* drop, drop_while
* zip (※一貫性のため、ブロックを...
...挙するプログラムです。

def pythagorean_triples
(1..Float::INFINITY).lazy.flat_map {|z|
(1..z).flat_map {|x|
(x..z).select {|y|
x**2 + y**2 == z**2
}.map {|y|
[x, y, z]
}
}
}
end
# 最初の10個のピタゴラス数を...

絞り込み条件を変える

Enumerable#slice_after {|elt| bool } -> Enumerator (19.0)

パターンがマッチした要素、もしくはブロックが真を返した要素を末尾の要素 としてチャンク化(グループ化)したものを繰り返す Enumerator を 返し ます。

...#=> [["foo\n"], ["bar\\\n", "baz\n"], ["\n"], ["qux\n"]]
p e.map {|ll| ll[0...-1].map {|l| l.sub(/\\\n\z/, "") }.join + ll.last }
#=>["foo\n", "barbaz\n", "\n", "qux\n"]

Enumerable
#map のようなメソッドを使うこともできます。

@see Enumerable#chunk, Enumerable#slice_before...

Enumerable#slice_after(pattern) -> Enumerator (19.0)

パターンがマッチした要素、もしくはブロックが真を返した要素を末尾の要素 としてチャンク化(グループ化)したものを繰り返す Enumerator を 返し ます。

...#=> [["foo\n"], ["bar\\\n", "baz\n"], ["\n"], ["qux\n"]]
p e.map {|ll| ll[0...-1].map {|l| l.sub(/\\\n\z/, "") }.join + ll.last }
#=>["foo\n", "barbaz\n", "\n", "qux\n"]

Enumerable
#map のようなメソッドを使うこともできます。

@see Enumerable#chunk, Enumerable#slice_before...

Enumerable#collect_concat -> Enumerator (15.0)

各要素をブロックに渡し、その返り値を連結した配列を返します。

...返り値は基本的に配列を返すべきです。

ブロックを省略した場合は、ブロックを受けとり
上で説明した評価をし、その結果の配列を返す
Enumerator オブジェクトを返します。

[[1,2], [3,4]].flat_map{|i| i.map{|j| j*2}} # => [2,4,6,8]...

Enumerable#collect_concat {| obj | block } -> Array (15.0)

各要素をブロックに渡し、その返り値を連結した配列を返します。

...返り値は基本的に配列を返すべきです。

ブロックを省略した場合は、ブロックを受けとり
上で説明した評価をし、その結果の配列を返す
Enumerator オブジェクトを返します。

[[1,2], [3,4]].flat_map{|i| i.map{|j| j*2}} # => [2,4,6,8]...

Enumerable#chunk_while {|elt_before, elt_after| ... } -> Enumerator (13.0)

要素を前から順にブロックで評価し、その結果によって要素をチャンクに分け た(グループ化した)要素を持つEnumerator を返します。

...ように呼び出します。
//emlist{
enum.chunk_while { |elt_before, elt_after| bool }.each { |ary| ... }
//}
to_a や map などのその他の Enumerable モジュールのメソッ
ドも有用です。

例:

# 1ずつ増加する部分配列ごとに分ける。
a = [1...
...2,4,9,10,11,12,15,16,19,20,21]
b = a.chunk_while {|i, j| i+1 == j }
p b.to_a # => [[1, 2], [4], [9, 10, 11, 12], [15, 16], [19, 20, 21]]
c = b.map {|a| a.length < 3 ? a : "#{a.first}-#{a.last}" }
p c # => [[1, 2], [4], "9-12", [15, 16], "19-21"]
d = c.join(",")
p d # => "1,2,4,9-12,15,16...
...同士の部分配列ごとに分ける。
# (Enumerable#chunk を使って実現する事も可能)
a = [7, 5, 9, 2, 0, 7, 9, 4, 2, 0]
p a.chunk_while {|i, j| i.even? == j.even? }.to_a
# => [[7, 5, 9], [2, 0], [7, 9], [4, 2, 0]]

Enumerable
#slice_when はブロックの戻り値が真では...

絞り込み条件を変える

Enumerable#slice_before {|elt| bool } -> Enumerator (13.0)

パターンがマッチした要素、もしくはブロックが真を返した要素から 次にマッチする手前までを チャンク化(グループ化)したものを繰り返す Enumerator を 返します。

...分割していきます。
最初の要素の評価は無視されます。

各チャンクは配列として表現されます。

Enumerable
#to_a や Enumerable#map のようなメソッドを使うこ
ともできます。

# 偶数要素をチャンクの先頭と見なす
[0,2,4,1,2,4,...
...とめる処理をするためには以下のようにします
(Enumerable#chunk_while のより簡単な例も参照)。

a = [0,2,3,4,6,7,9]
prev = a[0]
p a.slice_before {|e|
prev, prev2 = e, prev
prev2 + 1 != e
}.map {|es|
es.length <= 2 ? es.join(",") : "#{es.first}-#{es.las...
...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 状態を保持するオブジェクト。この引数は deprecated です。

@see Enumerable#chunk...
...h[:emp] = line == "\n"
prevemp && line.start_with?("From ")
}.each {|mail|
mail.pop if mail.last == "\n"
pp mail
}
}

@param initial_state 状態を保持するオブジェクト。この引数は deprecated です。

@see Enumerable#chunk, Enumerable#slice_after...

Enumerable#slice_before(initial_state) {|elt, state| bool } -> Enumerator (13.0)

パターンがマッチした要素、もしくはブロックが真を返した要素から 次にマッチする手前までを チャンク化(グループ化)したものを繰り返す Enumerator を 返します。

...分割していきます。
最初の要素の評価は無視されます。

各チャンクは配列として表現されます。

Enumerable
#to_a や Enumerable#map のようなメソッドを使うこ
ともできます。

# 偶数要素をチャンクの先頭と見なす
[0,2,4,1,2,4,...
...とめる処理をするためには以下のようにします
(Enumerable#chunk_while のより簡単な例も参照)。

a = [0,2,3,4,6,7,9]
prev = a[0]
p a.slice_before {|e|
prev, prev2 = e, prev
prev2 + 1 != e
}.map {|es|
es.length <= 2 ? es.join(",") : "#{es.first}-#{es.las...
...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 状態を保持するオブジェクト。この引数は deprecated です。

@see Enumerable#chunk...
...h[:emp] = line == "\n"
prevemp && line.start_with?("From ")
}.each {|mail|
mail.pop if mail.last == "\n"
pp mail
}
}

@param initial_state 状態を保持するオブジェクト。この引数は deprecated です。

@see Enumerable#chunk, Enumerable#slice_after...

Enumerable#slice_before(pattern) -> Enumerator (13.0)

パターンがマッチした要素、もしくはブロックが真を返した要素から 次にマッチする手前までを チャンク化(グループ化)したものを繰り返す Enumerator を 返します。

...分割していきます。
最初の要素の評価は無視されます。

各チャンクは配列として表現されます。

Enumerable
#to_a や Enumerable#map のようなメソッドを使うこ
ともできます。

# 偶数要素をチャンクの先頭と見なす
[0,2,4,1,2,4,...
...とめる処理をするためには以下のようにします
(Enumerable#chunk_while のより簡単な例も参照)。

a = [0,2,3,4,6,7,9]
prev = a[0]
p a.slice_before {|e|
prev, prev2 = e, prev
prev2 + 1 != e
}.map {|es|
es.length <= 2 ? es.join(",") : "#{es.first}-#{es.las...
...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 状態を保持するオブジェクト。この引数は deprecated です。

@see Enumerable#chunk...
...h[:emp] = line == "\n"
prevemp && line.start_with?("From ")
}.each {|mail|
mail.pop if mail.last == "\n"
pp mail
}
}

@param initial_state 状態を保持するオブジェクト。この引数は deprecated です。

@see Enumerable#chunk, Enumerable#slice_after...

Enumerable#slice_when {|elt_before, elt_after| bool } -> Enumerator (13.0)

要素を前から順にブロックで評価し、その結果によって要素をチャンクに分け た(グループ化した)要素を持つEnumerator を返します。

...ように呼び出します。
//emlist{
enum.slice_when { |elt_before, elt_after| bool }.each { |ary| ... }
//}
to_a や map などのその他の Enumerable モジュールのメソッ
ドも有用です。

例:

# 1ずつ増加する部分配列ごとに分ける。
a = [1,...
...2,4,9,10,11,12,15,16,19,20,21]
b = a.slice_when {|i, j| i+1 != j }
p b.to_a # => [[1, 2], [4], [9, 10, 11, 12], [15, 16], [19, 20, 21]]
c = b.map {|a| a.length < 3 ? a : "#{a.first}-#{a.last}" }
p c # => [[1, 2], [4], "9-12", [15, 16], "19-21"]
d = c.join(",")
p d # => "1,2,4,9-12,15,16,...
...# (Enumerable#chunk を使って実現する事も可能)
a = [7, 5, 9, 2, 0, 7, 9, 4, 2, 0]
p a.slice_when {|i, j| i.even? != j.even? }.to_a
# => [[7, 5, 9], [2, 0], [7, 9], [4, 2, 0]]

# 段落(空行が後ろに続く非空行の文字列)ごとに分ける。
# (Enumerable#chunk で...

Enumerable#sort_by -> Enumerator (13.0)

ブロックの評価結果を <=> メソッドで比較することで、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 が優れている点として、
比較条件が複雑な場合...
...}

$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#sort_by {|item| ... } -> [object] (13.0)

ブロックの評価結果を <=> メソッドで比較することで、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 が優れている点として、
比較条件が複雑な場合...
...}

$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#collect -> Enumerator (9.0)

各要素に対してブロックを評価した結果を全て含む配列を返します。

...列を返します。

ブロックを省略した場合、上で説明した繰り返しを実行し、その結果として
得られる配列を返すような Enumerator オブジェクトを返します。

例:
# すべて 3 倍にする
p [1, 2, 3].map {|n| n * 3 } # => [3, 6, 9]...

Enumerable#collect {|item| ... } -> [object] (9.0)

各要素に対してブロックを評価した結果を全て含む配列を返します。

...列を返します。

ブロックを省略した場合、上で説明した繰り返しを実行し、その結果として
得られる配列を返すような Enumerator オブジェクトを返します。

例:
# すべて 3 倍にする
p [1, 2, 3].map {|n| n * 3 } # => [3, 6, 9]...