gpt4 book ai didi

ruby - Ruby 的 send 和 public_send 方法有什么区别?

转载 作者:数据小太阳 更新时间:2023-10-29 06:31:54 30 4
gpt4 key购买 nike

我很好奇sendpublic_send有什么区别。例如:

class Klass
def hello(*args)
"Hello " + args.join(' ')
end
end

k = Klass.new
k.send :hello, "gentle", "readers" #=> "Hello gentle readers"
k.public_send :hello, "gentle", "readers" #=> "Hello gentle readers"

最佳答案

Unlike send, public_send calls public methods only.

Source

例子:

class Klass
private
def private_method
puts "Hello"
end
end

k = Klass.new
k.send(:private_method)
# => "Hello"

k.public_send(:private_method)
# => `public_send': private method `private_method' called for #<Klass:0x007f5fd7159a80> (NoMethodError)

您可能希望使用 #public_send 而不是 #send,以免规避私有(private)/ protected 可见性。

关于ruby - Ruby 的 send 和 public_send 方法有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30401970/

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