【问题标题】:ruby equivalent of c#'s internal keyword?ruby 相当于 c# 的 internal 关键字?
【发布时间】:2010-12-10 03:50:30
【问题描述】:

在 C# 中,“内部”类或方法只能从它所在的程序集中调用......我知道 Ruby 没有“程序集”或任何类型的真正包(除了 gems,但它们根本不是一回事),但我想知道是否有办法限制可以调用方法的位置,类似于内部?

我正在更新一个小框架并创建了一个包含 3 个方法的类。我希望能够仅从我的框架调用 3 种方法中的 2 种,并从任何地方调用第三种方法。这在红宝石中可能吗?还是我要解决这个问题,应该创建两个单独的类?还是?

【问题讨论】:

  • 无论如何都没有“真正”阻止任何人调用方法。您可以send 任何方法并执行它,而不管访问说明符如何。

标签: ruby internal accessor


【解决方案1】:

不幸的是,Ruby 是一种在封装方面非常缺乏的语言。它的容量非常有限,所以,不,没有任何相当于 C# internal 关键字的东西。也许在你的情况下,两个单独的类会更好,但是一个清晰的文档字符串或一个特殊的命名方案可以在没有大量修改的情况下做同样的事情。

另外,您必须注意,internal 关键字对库开发人员来说只不过是方便而已。它并不能真正阻止某人使用标记为内部的方法或类,有办法通过代码注入、AOP 等来规避这些保护。

【讨论】:

    猜你喜欢
    • 2013-10-08
    • 2011-05-08
    • 1970-01-01
    • 2016-06-21
    • 2010-09-15
    • 2010-10-01
    • 1970-01-01
    相关资源
    最近更新 更多