2016-06-21 38 views
-1

我正在学习ruby并阅读基础知识。玩过条件后,我做了以下代码:Ruby条件机制

x = 10 
z = 10 
if x==10 && (puts "wow" if x == z) 
    puts "hello" 
end 

当我运行它时,我只得到了“哇”。有人可以解释为什么“你好”从不打印?

谢谢。

+4

问自己什么'puts'返回以及结果将如何影响您的条件? –

+0

除了你的问题,我不知道我是否明白你想要做什么。请注意,如果'x!= 10','(puts“wow”if x == z)'不会被执行。如果'x == z'和'puts'如果'x = 10'和'z = 10'都是'puts''哇',那么'if x == z;放“哇”;如果x == 10,则放入“hello”; end'。 –

回答

3

因为puts回报nil

def test_method 
    puts "test" 
end 

t = test_method #=> "test" 
p t #=> nil 

这也就意味着if x==10 && nil将进行评估,以false。因此它永远不会进入条件并打印“你好”。

+0

我终于明白了:)。做了一个测试,如果x == 10 &&(p“哇”,如果x == z)'我看到了“hello”,非常感谢您的回答。 –

3

puts的返回值实际上为零。

从本质上讲,该声明说是

if x==10 && nil 
    puts "hello" 
end 

nil值是false。任何时候在条件中都有错误时,表达式将自动评估为false。因此,代码块将不会被执行。