実現したいこと
以下のように、Ruby の mapメソッドの処理中にbreakし、それまでの処理の配列を取得したいです。
良い方法があれば、教えていただけると幸いです。
example
1numbers = 2 [1, 2, 3, 4, 5].map do |i| 3 i 4 break if i == 4 5 end 6 7p numbers 8=> [1, 2, 3] ⬅︎ breakするまでの結果が配列になるようにしたい 9 10=> nil ⬅︎ 実際はこうなる
以下のような空配列を用いた方法は無しでお願いいたします。
numbers = [] [1, 2, 3, 4, 5].each do |i| break if i == 4 numbers << i end p numbers => [1, 2, 3]
また、以下のようなnext
を用いた方法も無しでお願いします。
条件に合致した時点でループを抜けたいです。
numbers = [1, 2, 3, 4, 5].map do |i| next if i >= 4 i end p numbers.compact! => [1, 2, 3]
補足
説明不足で申し訳ありません。
数字の配列を用いたのは具体例として挙げただけでして、以下のように特定の条件でループを抜け、それまでの処理結果の配列を返したいです。
strings = 10.times.map do break if rand(10) == 0 "hoge" end p strings ["hoge", "hoge", "hoge", "hoge"]
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。