Tag: 能见度

ruby – 文件私有方法

在ruby中,有没有办法定义文件(或模块)中每个类可见的方法,而不是需要文件的文件? 相关但不完全相同:我们可以重新定义一个方法(例如来自标准库类的方法),这样重新定义只在当前文件中可见吗? 所有其他文件应查看原始定义。

从Ruby中的实例方法调用受保护的类方法

我一直有这个烦人的反复出现的主题; 我只想说,我有一个定义实例方法和受保护类方法的类。 实例方法必须调用类方法。 为了做到这一点,我必须打破可见性规则并使用危险的“发送”function。 像这样的东西: class Bang def instance_bang self.class.send(:class_band) end protected def self.class_bang puts “bang” end end 我发现这很糟糕,因为类方法应该在类范围内使用,因此应该在其中保持可见和可调用,对吧? 是否有另一种方法在实例方法中使用类方法需要依赖“发送”function,因此不会破坏可见性? 更新: 根据Sergio Tulentsev的回复(thx for correction),我将用一个代码片段来更新我的担忧,该代码片段总结了我对方法可见性的关注,同时仍然在已经定义的范围内。 class Bang def instance_bang private_bang = 1 self.private_bang(private_bang) end private def private_bang(p) puts “bang” p end end 调用Bang.new.instance_bang会引发exception,除非你在private_bang调用上使用send(这次我检查了:))。