Ruby中有更好/更清晰的方法吗?Ruby:如果方法返回非零值,则返回
def my_method(x, y)
return error if (error = validate(x, y))
# do something else
end
我在别处打电话给#validate
,所以为了保持干爽,我让它返回错误信息。
Ruby中有更好/更清晰的方法吗?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在编写最短代码时没有任何好处。您应该始终致力于编写最易读易懂的代码。
另一种方式来写同样的事情将是:
def my_method(x, y)
unless validate(x, y)
# do something else
end
end
这将返回答案来验证它是否返回任何东西。
如果在输入错误和nil
否则validate
将返回错误,那么你可以做:
def my_method(x, y)
validate(x, y) or # do something else
end
'validate(x,y)'返回一个'Boolean'吗? – Drenmi
正常情况下,像例外情况一样,错误会中止过程。他们是为什么要避免这种情况的特殊原因?例如,当你运行my_method时,你是否随后检查在继续之前是否返回错误对象?否则,而不是返回错误,你可以引发错误 – jphager2