我确定我在这里遗漏了一些东西,但也是如此.
foo['bar'] = nil
if(foo['bar'] == nil)
puts "foo bar is nil :("
Run Code Online (Sandbox Code Playgroud)
但是,没有任何反应?有什么想法吗?
mik*_*kej 10
你需要一个end声明来关闭你的ifie
if(foo['bar'] == nil)
puts "foo bar is nil :("
end
Run Code Online (Sandbox Code Playgroud)
请注意,有一种nil?方法可以检查某些内容是否存在,nil并且您的条件周围的括号不是必需的,因此Ruby会更加惯用:
if foo['bar'].nil?
puts "foo bar is nil :("
end
Run Code Online (Sandbox Code Playgroud)
正如Arkku评论的那样,单行if可以简洁地写成:
puts "foo bar is nil :(" if foo['bar'].nil?
Run Code Online (Sandbox Code Playgroud)
哪个更好取决于上下文(例如,您是想强调条件还是强调条件为真时会发生什么)以及一定程度的个人偏好.但作为一个例子,你可能会在方法的开头加上一个保护条件,例如
raise "bar needed" if foo['bar'].nil?
Run Code Online (Sandbox Code Playgroud)