経緯
- 配列に要素を追加するときは、
<<
メソッドを使っていたのですが、表題の件で2~3分詰まったので投稿します。
サンプルコード
- 一つ目の要素追加では
obj.nil?
の結果が配列に追加されてしまいます。 - 三項演算子で書いた式の戻り値を追加したい場合は、二つ目のように()で囲むか、三つ目のように
push
メソッドを使う必要があります。
sample001.rb
obj = nil
array = []
array << obj.nil? ? 'nnn' : 'aaa'
array << (obj.nil? ? 'nnn' : 'aaa')
array.push obj.nil? ? 'nnn' : 'aaa'
puts array
実行結果
$ ruby sample001.rb
true
nnn
nnn
参考
-
プロを目指す人のためのRuby入門
- p.88
<<
メソッド - p.116
push
メソッド
- p.88