当前位置:  开发笔记 > 后端 > 正文

为什么不能使用符号来调用受保护的方法?

如何解决《为什么不能使用符号来调用受保护的方法?》经验,为你挑选了0个好方法。

鉴于以下课程:

class Foo
  def a
    dup.tap { |foo| foo.bar }
  end

  def b
    dup.tap(&:bar)
  end

  protected

  def bar
    puts 'bar'
  end
end

好像都Foo#aFoo#b应该是等价的,但它们不是:

> Foo.new.a
bar
 => #

> Foo.new.b
NoMethodError: protected method `bar' called for #

是否有一个原因?这是一个错误吗?

在Ruby 2.2.3p173上测试过

推荐阅读
可爱的天使keven_464
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有