我非常想知道send和public_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"有人能解释一下其中的区别吗?
发布于 2015-05-23 00:49:40
http://apidock.com/ruby/Object/public_send
与
不同,public_send只调用公共方法。
示例:
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)https://stackoverflow.com/questions/30401970
复制相似问题