我有一个内联,如果哪个没有做我认为的事情,我已经将它提炼成了一个控制台示例以便清楚。为什么测试工作时不内联?
我认为内联if在语法上与多行if相同,但看起来不是这样。
foo = "chunky"
(bar1 = foo) if (!defined?(bar1) && foo)
bar1
在这种情况下,BAR1最终设定为零。如果我把它重组到
foo = "chunky"
if !defined?(bar2) && foo
bar2 = foo
end
bar2
那么它的工作原理 - BAR2被设置为“矮胖”(我用BAR2而不是在第二个例子中BAR1以确保我使用一个未定义的变量在每种情况下)。
这是内联如果总是将bar1设置为某些东西,默认为零?我认为它只是没有评估之前的部分,如果如果测试返回falsy。
相关问题(可能是重复的 - 不能告诉):http://stackoverflow.com/questions/3775402/rubys-foo-true-if-defined-foo-wont-work -as-expected – 2012-03-19 21:55:22