没有条件的if-elsif在Ruby中没有正确分支

ang*_*aba 4 ruby if-statement

当我运行以下代码时:

if  
  puts "A"  
elsif  
  puts "B"  
end  
Run Code Online (Sandbox Code Playgroud)

我得到输出:

A
B
Run Code Online (Sandbox Code Playgroud)

为什么不警告或提出任何错误?为什么它会执行两个分支?

Ser*_*sev 19

没有条件的if-elsif

这是你错了.这puts 条件.该片段中没有实体,只有条件.

这是您的代码,格式正确.

if puts "A"  
elsif puts "B"  
end  
Run Code Online (Sandbox Code Playgroud)

为什么它执行两个分支?

puts返回nil,一个假值.这就是它尝试两个分支的原因.如果这个代码有else,它也会被执行.