首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ruby send和ruby public_send方法有什么不同?

ruby send和ruby public_send方法有什么不同?
EN

Stack Overflow用户
提问于 2015-05-23 00:47:22
回答 1查看 16K关注 0票数 28

我非常想知道sendpublic_send之间的区别。例如:

代码语言:javascript
复制
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"

有人能解释一下其中的区别吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-05-23 00:49:40

http://apidock.com/ruby/Object/public_send

不同,public_send只调用公共方法。

示例:

代码语言:javascript
复制
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)
票数 46
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30401970

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档