为什么一切都变得真实,如果条件错误的话?

Sha*_*han 0 ruby if-statement

为什么在使用if条件检查时,所有true,numeric,float和string都变为true,除了false?例子:

puts "Hello World" if 0 # => Hello World
puts "Hello World" if 1 # => Hello World
puts "Hello World" if 2 # => Hello World
puts "Hello World" if 200 # => Hello World
puts "Hello World" if "Ruby" # => Hello World
puts "Hello World" if "Rails" # => Hello World
puts "Hello World" if true # => Hello World

puts "Hello World" if false # => nil
Run Code Online (Sandbox Code Playgroud)

shi*_*vam 5

true除了false和之外,一切都在Ruby中评估nil.

PS:这里没有隐藏的目标,它只是语言设计的选择.