詳細
value ? value.some_method : nil # または value ? value.some_method : false
下記と等価です。
value && value.some_method
書籍 Confident Rubyでは後者の書き方を推奨しています。
サンプルコード
require 'tbpgr_utils' ['text', nil].each do |value| bulk_puts_eval binding, <<-EOS value ? value.upcase : nil value && value.upcase EOS end ['text', false].each do |value| bulk_puts_eval binding, <<-EOS value ? value.upcase : false value && value.upcase EOS end
出力
value ? value.upcase : nil # => "TEXT" value && value.upcase # => "TEXT" value ? value.upcase : nil # => nil value && value.upcase # => nil value ? value.upcase : false # => "TEXT" value && value.upcase # => "TEXT" value ? value.upcase : false # => false value && value.upcase # => false