別のキーワード
キーワード
- all? (32)
- any? (32)
- chain (7)
- chunk (12)
-
chunk
_ while (12) - collect (24)
-
collect
_ concat (24) - compact (4)
- count (36)
- cycle (24)
- detect (24)
- drop (12)
-
drop
_ while (24) -
each
_ cons (24) -
each
_ entry (24) -
each
_ slice (24) -
each
_ with _ index (24) -
each
_ with _ object (24) - entries (12)
- filter (14)
-
filter
_ map (12) - find (24)
-
find
_ all (24) -
find
_ index (36) - first (24)
-
flat
_ map (24) - grep (24)
-
grep
_ v (24) -
group
_ by (24) - include? (12)
- inject (36)
- lazy (12)
- map (24)
- max (48)
-
max
_ by (48) - member? (12)
- min (48)
-
min
_ by (48) - minmax (24)
-
minmax
_ by (24) - none? (32)
- one? (32)
- partition (24)
- reduce (36)
- reject (24)
-
reverse
_ each (24) - select (24)
-
slice
_ after (24) -
slice
_ before (24) -
slice
_ when (12) - sort (24)
-
sort
_ by (24) - sum (24)
- take (12)
-
take
_ while (24) - tally (10)
-
to
_ a (12) -
to
_ h (19) -
to
_ set (24) - uniq (24)
- zip (24)
検索結果
先頭5件
-
Enumerable
# sort _ by -> Enumerator (12298.0) -
ブロックの評価結果を <=> メソッドで比較することで、self を昇 順にソートします。ソートされた配列を新たに生成して返します。
...t[例][ruby]{
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 を......ます。
従って downcase の実行速度が遅ければ sort の速度が致命的に低下します。
//emlist[][ruby]{
p ["BAR", "FOO", "bar", "foo"].sort {|a, b| a.downcase <=> b.downcase }
//}
一方、次のように sort_by を使うと downcase の実行回数は要素数と同じで......ist[][ruby]{
p ["BAR", "FOO", "bar", "foo"].sort_by {|v| v.downcase }
//}
以下の、実行回数の検証結果を参照してみてください。
//emlist[][ruby]{
class Integer
def count
$n += 1
self
end
end
ary = []
1.upto(1000) {|v| ary << rand(v) }
$n = 0
ary.sort {|a,b| a.co... -
Enumerable
# sort _ by {|item| . . . } -> [object] (12298.0) -
ブロックの評価結果を <=> メソッドで比較することで、self を昇 順にソートします。ソートされた配列を新たに生成して返します。
...t[例][ruby]{
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 を......ます。
従って downcase の実行速度が遅ければ sort の速度が致命的に低下します。
//emlist[][ruby]{
p ["BAR", "FOO", "bar", "foo"].sort {|a, b| a.downcase <=> b.downcase }
//}
一方、次のように sort_by を使うと downcase の実行回数は要素数と同じで......ist[][ruby]{
p ["BAR", "FOO", "bar", "foo"].sort_by {|v| v.downcase }
//}
以下の、実行回数の検証結果を参照してみてください。
//emlist[][ruby]{
class Integer
def count
$n += 1
self
end
end
ary = []
1.upto(1000) {|v| ary << rand(v) }
$n = 0
ary.sort {|a,b| a.co... -
Enumerable
# slice _ before {|elt| bool } -> Enumerator (12238.0) -
パターンがマッチした要素、もしくはブロックが真を返した要素から 次にマッチする手前までを チャンク化(グループ化)したものを繰り返す Enumerator を 返します。
...はブロックが真を返した要素から
次にマッチする手前までを
チャンク化(グループ化)したものを繰り返す Enumerator を
返します。
パターンを渡した場合は各要素に対し === が呼び出され、
それが真になったところをチャン......ャンクは配列として表現されます。
Enumerable#to_a や Enumerable#map のようなメソッドを使うこ
ともできます。
//emlist[例][ruby]{
# 偶数要素をチャンクの先頭と見なす
[0,2,4,1,2,4,5,3,1,4,2].slice_before(&:even?).to_a
# => [[0], [2], [4, 1], [2], [4,.......slice_before(&:odd?).to_a
# => [[0, 2, 4], [1, 2, 4], [5], [3], [1, 4, 2]]
# ChangeLog のエントリーを順に取る
open("ChangeLog") {|f|
f.slice_before(/\A\S/).each {|e| pp e}
}
# 上と同じだが、パターンでなくブロックを使う
open("ChangeLog") {|f|
f.slice_before {|li... -
Enumerable
# slice _ before(pattern) -> Enumerator (12238.0) -
パターンがマッチした要素、もしくはブロックが真を返した要素から 次にマッチする手前までを チャンク化(グループ化)したものを繰り返す Enumerator を 返します。
...はブロックが真を返した要素から
次にマッチする手前までを
チャンク化(グループ化)したものを繰り返す Enumerator を
返します。
パターンを渡した場合は各要素に対し === が呼び出され、
それが真になったところをチャン......ャンクは配列として表現されます。
Enumerable#to_a や Enumerable#map のようなメソッドを使うこ
ともできます。
//emlist[例][ruby]{
# 偶数要素をチャンクの先頭と見なす
[0,2,4,1,2,4,5,3,1,4,2].slice_before(&:even?).to_a
# => [[0], [2], [4, 1], [2], [4,.......slice_before(&:odd?).to_a
# => [[0, 2, 4], [1, 2, 4], [5], [3], [1, 4, 2]]
# ChangeLog のエントリーを順に取る
open("ChangeLog") {|f|
f.slice_before(/\A\S/).each {|e| pp e}
}
# 上と同じだが、パターンでなくブロックを使う
open("ChangeLog") {|f|
f.slice_before {|li... -
Enumerable
# group _ by -> Enumerator (12214.0) -
ブロックを評価した結果をキー、対応する要素の配列を値とするハッシュを返します。
...ブロックを評価した結果をキー、対応する要素の配列を値とするハッシュを返します。
//emlist[例][ruby]{
(1..6).group_by {|i| i%3} #=> {0=>[3, 6], 1=>[1, 4], 2=>[2, 5]}
//}
ブロックを省略した場合は Enumerator を返します。... -
Enumerable
# group _ by {|obj| . . . } -> Hash (12214.0) -
ブロックを評価した結果をキー、対応する要素の配列を値とするハッシュを返します。
...ブロックを評価した結果をキー、対応する要素の配列を値とするハッシュを返します。
//emlist[例][ruby]{
(1..6).group_by {|i| i%3} #=> {0=>[3, 6], 1=>[1, 4], 2=>[2, 5]}
//}
ブロックを省略した場合は Enumerator を返します。... -
Enumerable
# member?(val) -> bool (12214.0) -
val と == の関係にある要素を含むとき真を返します。
...val と == の関係にある要素を含むとき真を返します。
@param val 任意のオブジェクト
//emlist[例][ruby]{
[2, 4, 6].include? 2 #=> true
[2, 4, 6].include? 1 #=> false
[2, 4, 6].member? 2 #=> true
[2, 4, 6].member? 1 #=> false
//}... -
Enumerable
# each _ with _ object(obj) {|(*args) , memo _ obj| . . . } -> object (9514.0) -
与えられた任意のオブジェクトと要素をブロックに渡し繰り返し、最初に与えられたオブジェクトを返します。
...返します。
ブロックを省略した場合は Enumerator を返します。
@param obj 任意のオブジェクトを指定します。
//emlist[例][ruby]{
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
# reduce(init = self . first) {|result , item| . . . } -> object (9332.0) -
リストのたたみこみ演算を行います。
...ればブロックを実行せずに nil を返します。
@param init 最初の result の値です。任意のオブジェクトが渡せます。
@param sym ブロックの代わりに使われるメソッド名を表す Symbol オブジェクトを指定します。
実行結......ドが呼ばれます。
//emlist[例][ruby]{
# 合計を計算する。
p [2, 3, 4, 5].inject {|result, item| result + item } #=> 14
# 自乗和を計算する。初期値をセットする必要がある。
p [2, 3, 4, 5].inject(0) {|result, item| result + item**2 } #=> 54
//}
この式......は以下のように書いても同じ結果が得られます。
//emlist[例][ruby]{
result = 0
[1, 2, 3, 4, 5].each {|v| result += v }
p result # => 15
p [1, 2, 3, 4, 5].inject(:+) #=> 15
p ["b", "c", "d"].inject("abbccddde", :squeeze) #=> "abcde"
//}...