別のキーワード
種類
- インスタンスメソッド (237)
- クラス (11)
ライブラリ
- ビルトイン (248)
クラス
- Array (34)
-
Enumerator
:: Lazy (82) - Integer (11)
- Object (11)
モジュール
- Enumerable (99)
キーワード
- Numeric (11)
- chunk (11)
-
chunk
_ while (11) - eager (5)
- filter (30)
-
filter
_ map (15) -
find
_ all (33) - reject (11)
- select (55)
-
slice
_ before (33) -
slice
_ when (11) - tap (11)
検索結果
先頭5件
-
Integer
# even? -> bool (18219.0) -
自身が偶数であれば真を返します。 そうでない場合は偽を返します。
...自身が偶数であれば真を返します。
そうでない場合は偽を返します。
//emlist[][ruby]{
10.even? # => true
5.even? # => false
//}... -
Numeric (2202.0)
-
数値を表す抽象クラスです。Integer や Float などの数値クラス は Numeric のサブクラスとして実装されています。
...されています。
演算や比較を行うメソッド(+, -, *, /, <=>)は Numeric のサブクラスで定義されま
す。Numeric で定義されているメソッドは、サブクラスで提供されているメソッド
(+, -, *, /, %) を利用して定義されるものがほとんど......ださい。
=> ruby 2.1.2p95 (2014-05-08 revision 45877) [x86_64-linux]
Numeric Integer Fixnum Bignum Float Rational Complex
-------------------------------------------------------------------------------------------......o - o o o - -
downto | - o - - - - -
eql? | o - - o o - o
even? | -......=> ruby 2.4.2p198 (2017-09-14 revision 59899) [x86_64-darwin15]
Numeric Integer Float Rational Complex
--------------------------------------------------------------------------------
% | o o o -......o - - -
divmod | o o o - -
downto | - o - - -
eql? | o - o - o
even? |... -
Enumerable
# chunk {|elt| . . . } -> Enumerator (208.0) -
要素を前から順にブロックで評価し、その結果によって 要素をチャンクに分けた(グループ化した)要素を持つ Enumerator を返します。
...//emlist[][ruby]{
enum.chunk {|elt| key }.each {|key, ary| do_something }
//}
例として、整数列を連続する奇数/偶数に分ける例を見てみます。
「n.even?」の値が切り替わるところで区切られているのがわかるでしょう。
//emlist[例][ruby]{
[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]]
# [false, [5, 3, 5]]
//}
このメソッドは各要素が既にソートされている場合に便利です。
以下の例で......文字の違いを無視するため upcase しています。
//emlist[例][ruby]{
# ファイルのエンコーディングは実際のファイルに合わせてください。
open("/usr/share/dict/words", "r:iso-8859-1") {|f|
f.chunk {|line| line[0].upcase }.each {|ch, lines| p [ch, lines.le... -
Enumerable
# slice _ when {|elt _ before , elt _ after| bool } -> Enumerator (154.0) -
要素を前から順にブロックで評価し、その結果によって要素をチャンクに分け た(グループ化した)要素を持つEnumerator を返します。
...elt_before、elt_after に渡し、ブロックの
評価値が真になる所でチャンクを区切ります。
ブロックは self の長さ - 1 回呼び出されます。
@return チャンクごとの配列をブロックパラメータに渡す Enumerator
を返します。eachメ......例][ruby]{
# 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",......ごとに分ける。
# (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#... -
Enumerable
# chunk _ while {|elt _ before , elt _ after| . . . } -> Enumerator (148.0) -
要素を前から順にブロックで評価し、その結果によって要素をチャンクに分け た(グループ化した)要素を持つEnumerator を返します。
...elt_before、elt_after に渡し、ブロックの
評価値が偽になる所でチャンクを区切ります。
ブロックは self の長さ - 1 回呼び出されます。
@return チャンクごとの配列をブロックパラメータに渡す Enumerator
を返します。eachメ......例][ruby]{
# 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",......ごとに分ける。
# (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 はブロックの戻り値が真ではなく偽の時に要素... -
Enumerator
:: Lazy # eager -> Enumerator (118.0) -
自身を遅延評価しない Enumerator に変換して返します。
...価しない Enumerator に変換して返します。
//emlist[例][ruby]{
lazy_enum = (1..).each.lazy
# select が遅延評価されるので終了する
p lazy_enum.class # => Enumerator::Lazy
p lazy_enum.select { |n| n.even? }.first(5)
# => [2, 4, 6, 8, 10]
# select が遅延評価されな......いので終了しない
enum = lazy_enum.eager
p enum.class # => Enumerator
p enum.select { |n| n.even? }.first(5)
//}... -
Enumerator
:: Lazy # filter {|item| . . . } -> Enumerator :: Lazy (118.0) -
Enumerable#select と同じですが、配列ではなくEnumerator::Lazy を返します。
...ックを指定しなかった場合に発生します。
//emlist[例][ruby]{
1.step.lazy.find_all { |i| i.even? }
# => #<Enumerator::Lazy: #<Enumerator::Lazy: #<Enumerator: 1:step>>:find_all>
1.step.lazy.select { |i| i.even? }.take(10).force
# => [2, 4, 6, 8, 10, 12, 14, 16, 18, 20]
//}
@see En... -
Enumerator
:: Lazy # filter _ map {|item| . . . } -> Enumerator :: Lazy (118.0) -
Enumerable#filter_map と同じですが、配列ではなく Enumerator::Lazy を返します。
...指定しなかった場合に発生します。
//emlist[例][ruby]{
1.step.lazy.filter_map { |n| n * 2 if n.even? }
# => #<Enumerator::Lazy: #<Enumerator::Lazy: (1.step)>:filter_map>
1.step.lazy.filter_map { |n| n * 2 if n.even? }.take(10).force
# => [4, 8, 12, 16, 20, 24, 28, 32, 36, 40]
//}
@... -
Enumerator
:: Lazy # find _ all {|item| . . . } -> Enumerator :: Lazy (118.0) -
Enumerable#select と同じですが、配列ではなくEnumerator::Lazy を返します。
...ックを指定しなかった場合に発生します。
//emlist[例][ruby]{
1.step.lazy.find_all { |i| i.even? }
# => #<Enumerator::Lazy: #<Enumerator::Lazy: #<Enumerator: 1:step>>:find_all>
1.step.lazy.select { |i| i.even? }.take(10).force
# => [2, 4, 6, 8, 10, 12, 14, 16, 18, 20]
//}
@see En... -
Enumerator
:: Lazy # reject {|item| . . . } -> Enumerator :: Lazy (118.0) -
Enumerable#reject と同じですが、配列ではなくEnumerator::Lazy を返します。
...ックを指定しなかった場合に発生します。
//emlist[例][ruby]{
1.step.lazy.reject { |i| i.even? }
# => #<Enumerator::Lazy: #<Enumerator::Lazy: #<Enumerator: 1:step>>:reject>
1.step.lazy.reject { |i| i.even? }.take(10).force
# => [1, 3, 5, 7, 9, 11, 13, 15, 17, 19]
//}
@see Enumera... -
Enumerator
:: Lazy # select {|item| . . . } -> Enumerator :: Lazy (118.0) -
Enumerable#select と同じですが、配列ではなくEnumerator::Lazy を返します。
...ックを指定しなかった場合に発生します。
//emlist[例][ruby]{
1.step.lazy.find_all { |i| i.even? }
# => #<Enumerator::Lazy: #<Enumerator::Lazy: #<Enumerator: 1:step>>:find_all>
1.step.lazy.select { |i| i.even? }.take(10).force
# => [2, 4, 6, 8, 10, 12, 14, 16, 18, 20]
//}
@see En...