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

有没有办法从Ruby中的实例调用私有Class方法?

如何解决《有没有办法从Ruby中的实例调用私有Class方法?》经验,为你挑选了1个好方法。

self.class.send :method, args...当然不是.我想在类和实例级别上创建一个相当复杂的方法,而不需要复制代码.


更新:

@Jonathan Branam:这是我的假设,但我想确保没有其他人找到方法.Ruby中的可见性与Java中的可见性非常不同.你也很正确,private它不适用于类方法,虽然这将声明一个私有类方法:

class Foo
  class < NoMethodError: private method 'bar' called for Foo:Class

Jonathan Bra.. 12

这是一个与问题一起提供的代码片段.在类定义中使用"private"不适用于类方法.您需要使用"private_class_method",如以下示例所示.

class Foo
  def self.private_bar
    # Complex logic goes here
    puts "hi"
  end
  private_class_method :private_bar
  class <

我没有办法解决这个问题.文档说您无法指定私有方法的接收.此外,您只能从同一实例访问私有方法.类Foo是与给定Foo实例不同的对象.

不要把我的答案作为最终答案.我当然不是专家,但我想提供一个代码片段,以便其他尝试回答的人将拥有正确的私有类方法.



1> Jonathan Bra..:

这是一个与问题一起提供的代码片段.在类定义中使用"private"不适用于类方法.您需要使用"private_class_method",如以下示例所示.

class Foo
  def self.private_bar
    # Complex logic goes here
    puts "hi"
  end
  private_class_method :private_bar
  class <

我没有办法解决这个问题.文档说您无法指定私有方法的接收.此外,您只能从同一实例访问私有方法.类Foo是与给定Foo实例不同的对象.

不要把我的答案作为最终答案.我当然不是专家,但我想提供一个代码片段,以便其他尝试回答的人将拥有正确的私有类方法.

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