我很想知道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"
Run Code Online (Sandbox Code Playgroud)
有人可以解释一下这个区别吗?
Cas*_*per 34
http://apidock.com/ruby/Object/public_send
与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)
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
9306 次 |
最近记录: |