Techioz Blog

Ruby 配列を少なくとも 1 つのデフォルト値で初期化する最も簡潔な方法は何ですか?

概要

Rubyでは、配列を持つオブジェクトがあります。配列内の値を反復処理したいのですが、配列内に少なくとも 1 つの項目が必要です。次のようなことができることはわかっています。

if object.initial_array.empty?
  object.initial_array << "foo"
end
object.initial_array.each do ...

しかし、これを 1 行で実行できるようにしたいと考えています。配列を列挙し、空の場合はデフォルト値を指定する最も簡潔な方法は何ですか?

解決策

次のように、initial_array メソッドにデフォルトを設定するだけです。

  attr_accessor :initial_array

  def initial_array
    @initial_array.presence || @initial_array = %w[foo]
  end