1. ホーム
  2. ruby

[解決済み] Rubyのリスト内包

2023-01-09 04:35:36

質問

Pythonのリスト内包と同等のことをするために、以下のようなことをしています。

some_array.select{|x| x % 2 == 0 }.collect{|x| x * 3}

これを行うためのより良い方法はありますか...おそらく1つのメソッド呼び出しで?

どのように解決するのですか?

どうしてもやりたいなら、こんな感じでArray#comprehendメソッドを作ればいい。

class Array
  def comprehend(&block)
    return self if block.nil?
    self.collect(&block).compact
  end
end

some_array = [1, 2, 3, 4, 5, 6]
new_array = some_array.comprehend {|x| x * 3 if x % 2 == 0}
puts new_array

印刷します。

6
12
18

私なら、あなたのような方法でやると思いますが。