Ale*_*pov 4 ruby syntax coding-style
public_send我知道调用而不是对象调用是一个很好的做法send,以免无意中调用私有方法。但是,如果我知道我要调用的方法肯定是公共的,我可以使用 send 吗?我写了这段代码:
[:name, :artist, :album,].each do |attribute|
define_method "#{attribute}s" do
@songs.map { |song| song.public_send(attribute) }.uniq
end
end
Run Code Online (Sandbox Code Playgroud)
public_send如果我用send这里替换,会被认为是不好的做法吗?
尽可能使用public_send并避免send它会减少您的表面积,总体来说是更好的做法。
String.new.public_send("sleep") # error
Run Code Online (Sandbox Code Playgroud)
String.new.send("sleep") # hangs
Run Code Online (Sandbox Code Playgroud)
在上面的例子中,用 替换public_send就send可以了,但是如果东西被重构了怎么办?更好地建立一种将长期风险降至最低的做法。
| 归档时间: |
|
| 查看次数: |
2819 次 |
| 最近记录: |