我正在尝试清理我的代码...
<% if defined? foo == "local-variable" %>
<% foo = foo %>
<% else %>
<% foo = nil %>
<% end %>
使用像这样的三元运算符......
<% defined? foo == "local-variable" ? foo : nil %>
然而三元不能正常运行并且默认为nil
...我对使用三元运算符相当新(可能已经养成了使用它们的习惯,因为它们可以保存线条)...是在三元组中使用defined?
?
答案 0 :(得分:4)
应该是:
<% defined?(foo) == "local-variable" ? foo : nil %>
...返回值提供有关表达式的信息。
>> defined?(foo) == "local-variable"
=> true
>> defined? foo
=> "local-variable"
>> defined? (foo == "local-variable")
=> "method"
答案 1 :(得分:2)
这不是你问题的答案,但这样的事情可能会有所帮助:
foo ||= nil
转换为:
if defined? foo
foo || foo = nil
else
foo = nil
end