ruby send 和 ruby​​ public_send 方法有什么区别? [英] What is the difference between ruby send and ruby public_send method?

查看:175
本文介绍了ruby send 和 ruby​​ public_send 方法有什么区别?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我很想知道 sendpublic_send 之间有什么区别.例如:

I am very curious to know what the difference is between send and public_send. E.g.:

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"

有人可以解释一下区别吗?

Can someone please explain the difference?

推荐答案

http://apidock.com/红宝石/对象/public_send

与 send 不同,public_send 只调用公共方法.

Unlike send, public_send calls public methods only.

示例:

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)

这篇关于ruby send 和 ruby​​ public_send 方法有什么区别?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆