Ruby:如果有条件,如何组合推杆并返回内部?

Atu*_*hav 1 ruby ruby-on-rails

如何打印消息,然后从使用ruby的函数返回?

2.3.4 :038 > def foo(num)
2.3.4 :039?>   print "Your number is: #{num}" && return if num > 10
2.3.4 :040?>   print "Number too small"
2.3.4 :041?>   end
 => :foo
2.3.4 :042 > foo(47)
 => nil
2.3.4 :043 > foo(7)
Number too small => nil
2.3.4 :044 >
Run Code Online (Sandbox Code Playgroud)

当我用foo打电话给我时,47为什么没有得到Your number is: 47输出?

PS:也可以用其他更简单的方式编写此函数,我只是想通过此函数表达我的怀疑。

spi*_*ann 5

因为Ruby读到这行

print "Your number is: #{num}" && return if num > 10
Run Code Online (Sandbox Code Playgroud)

像这样

print("Your number is: #{num}" && return) if num > 10
Run Code Online (Sandbox Code Playgroud)

这使得方法return有机会进行print任何尝试。

添加一对括号可以帮助Ruby解析所需的顺序:

print("Your number is: #{num}") || return if num > 10
Run Code Online (Sandbox Code Playgroud)