aa ? aa : nil と aa||nil の違い

rubocopでaa ? aa : nilのところを || に直せと言われた

どう一緒になるのか試してみた

 

書いたコード

aa = "aa"
bb = ""
cc = nil
dd = false

puts aa.nil?

puts bb.nil?

puts cc.nil?

puts dd.nil?

puts aa ? aa : nil

puts bb ? bb : nil

puts cc ? cc : nil

puts dd ? dd : nil

puts aa||nil

puts bb||nil

puts cc||nil

puts dd||nil

if aa||nil
  puts "hello"
else
  puts "bye"
end

if bb||nil
  puts "hello"
else
  puts "bye"
end

if cc||nil
  puts "hello"
else
  puts "bye"
end

if dd||nil
  puts "hello"
else
  puts "bye"
end

if bb == cc
  puts "hello"
else
  puts "bye"
end

if bb == dd
  puts "hello"
else
  puts "bye"
end

if dd == cc
  puts "hello"
else
  puts "bye"
end

出力結果

$ ruby practice.rb

false

false

true

false

aa

 

 

 

aa

 

 

 

hello

hello

bye

bye

bye

bye

bye

 

 

こうなった。

どうやらおんなじっぽい