在 Ruby 中是否有更好/更清洁的方法来做到这一点?
def my_method(x, y)
return error if (error = validate(x, y))
# do something else
end
我#validate
在其他地方打电话,所以为了保持干燥,我让它返回错误消息。
在 Ruby 中是否有更好/更清洁的方法来做到这一点?
def my_method(x, y)
return error if (error = validate(x, y))
# do something else
end
我#validate
在其他地方打电话,所以为了保持干燥,我让它返回错误消息。
这个更明确、更易读的版本有什么问题?
def my_method(x, y)
error = validate(x, y)
if error
error
else
# do something else
end
end
IMO 编写尽可能短的代码没有任何好处。您应该始终致力于编写最具可读性和可理解性的代码。
如果validate
在输入错误时返回错误,nil
否则,您可以执行以下操作:
def my_method(x, y)
validate(x, y) or # do something else
end
编写相同内容的另一种方法是:
def my_method(x, y)
unless validate(x, y)
# do something else
end
end
这将返回答案以验证它是否返回任何内容。