gpt4 book ai didi

ruby - 什么时候可以安全地调用 Ruby 中对象的发送方法?

转载 作者:数据小太阳 更新时间:2023-10-29 07:50:07 27 4
gpt4 key购买 nike

我知道在对象上调用 public_send 而不是 send 是一种很好的做法,以免无意中调用私有(private)方法。但是,如果我知道我将要调用的方法肯定是公开的,我可以使用发送吗?我写了这段代码:

[:name, :artist, :album,].each do |attribute|
define_method "#{attribute}s" do
@songs.map { |song| song.public_send(attribute) }.uniq
end
end

如果我在这里用 send 替换 public_send 会被认为是不好的做法吗?

最佳答案

尽可能始终使用 public_send 并避免 send 它会减少您的表面积,并且总体上是一种更好的做法。

String.new.public_send("sleep") # error
String.new.send("sleep") # hangs

在上面的示例中,将 public_send 替换为 send 没问题,但是如果东西被重构了怎么办?更好地建立一种做法,让您承担最少的长期风险。

关于ruby - 什么时候可以安全地调用 Ruby 中对象的发送方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20071837/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com