如何解决如何在Raku中定义受保护的方法?
我有一个类,另一个类是从它继承的。我想在父类中定义一些方法,我想与子类私下共享,而不与世界共享。
如何为此类方法实现其他编程语言中的受保护范围之类的东西?
我已经考虑过使用私有方法引入角色,但是我还需要维护一些私有状态以供方法使用,并且我需要使两个类都does
成为角色,但这似乎导致(角色的)实例变量在两个类中都重复了……
解决方法
有两个步骤可以完成您想做的事情。第一种是让父类trusts
为子类:
class Dog { ... } # forward declaration necessary
class Animal {
trusts Dog; # Dog now has access to private methods
method !secret {
return 42
}
}
class Dog is Animal {
method tell-secret { ... }
}
现在,让我们的狗来揭露动物的秘密。您可能会认为这很简单
method tell-secret {
say self!secret
}
但这不起作用。虽然调用公共方法将遵循标准的MRO来确定要调用的方法,但使用私有方法时,我们必须明确。在这种情况下,self!secret
指的是直接属于method !secret
的{{1}}。为了引用Dog
的秘密方法,我们将其明确表示:
Animal
现在,Dog可以撒豆了。
您会注意到的一件事是,一旦一个类信任另一个类,它就会完全开放。没有办法将信任仅限于单个方法。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。