det*_*zed 1 ruby null return idiomatic
Ruby中的惯用语是不是明确地返回nil?我们这样说:
def find_something data
if data.has_what_we_need?
a = data.something
if a.has_what_we_want?
a.the_stuff[42]
end
end
end
Run Code Online (Sandbox Code Playgroud)
与这样的事情(可以说是吵闹的)相反:
def find_something data
if data.has_what_we_need?
a = data.something
if a.has_what_we_want?
a.the_stuff[42]
else
nil
end
else
nil
end
end
Run Code Online (Sandbox Code Playgroud)
如果条件不满足,我会尝试创建提前纾困的方法,在缩进方面压扁代码:
def find_something data
return unless data.has_what_we_need?
a = data.something
return unless a.has_what_we_want?
a.the_stuff[42]
end
Run Code Online (Sandbox Code Playgroud)
这有两个明确定义的退出点,return在阅读它时应该显示为一个相当明显的东西.return没有参数的A 将返回nil给调用者.
如果你不关心nilvs. false你可以更加浓缩这个:
def find_something data
return unless data.has_what_we_need?
a = data.something
a.has_what_we_want? and a.the_stuff[42]
end
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1490 次 |
| 最近记录: |