if array.present?
puts "hello"
end
除此之外别无选择。
如何使用if
撰写上述unless
条件。
我问这个问题是因为这个lint错误:
使用保护子句而不是将代码包装在条件表达式
中
答案 0 :(得分:1)
没有理由。
请注意:unless
为the inverse of if
(如果您愿意,则为!if
),并且只是为了让您的代码更容易进行阅读。
在您的表达中使用unless
会非常尴尬,因为您现在正在将实际的工作内容移到else
语句中......
unless array.present?
return
else
puts "hello"
end
...如果您坚持使用否定的if
,那么您的代码就不会更容易阅读:
if !array.present?
return
else
puts "hello"
end
请勿在此处使用unless
。您将失去可读性以换取几乎所有内容。
答案 1 :(得分:1)
关于your comment:
我因为这个lint错误而问这个问题
使用保护子句而不是将代码包装在条件表达式
中
这意味着代替:
def foo(array)
if array.present?
puts "hello"
end
end
你应该使用:
def foo(array)
return unless array.present?
puts "hello"
end
请参阅https://github.com/bbatsov/ruby-style-guide#no-nested-conditionals
如果这是一个Rails问题(is it?),您还可以使用blank?
:
def foo(array)
return if array.blank?
puts "hello"
end
答案 2 :(得分:0)
unless array.present?
return
else
puts "hello"
end
OP要求进行单线修改:
伪代码:
something unless condition
因此:
puts "hello" unless !array.present?
答案 3 :(得分:0)
一衬垫:
puts "hello" unless !array.present?
但是,我建议:
puts "hello" if array.present?