gpt4 book ai didi

oop - 如何在 Raku 中定义 protected 方法?

转载 作者:行者123 更新时间:2023-12-03 13:52:40 25 4
gpt4 key购买 nike

我有一个类和另一个继承自它的类。我在父类中定义了一些方法,我想私下与子类共享,但不与世界共享。
对于此类方法,我如何才能在其他编程语言中实现类似 protected 范围?
我考虑过使用私有(private)方法引入一个角色,但我还需要维护一些私有(private)状态以供方法使用,并且我需要创建两个类 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 { ... }
}
现在,让狗揭开动物的 secret 。你可能认为这很简单
method tell-secret { 
say self!secret
}
但这不起作用。虽然调用公共(public)方法将遵循标准 MRO 来确定被调用的方法,但对于私有(private)方法,我们必须是显式的。在这种情况下, self!secret将引用 method !secret直接属于 Dog .引用 Animal的 secret 方法,我们明确表示:
method tell-secret { 
say self!Animal::secret
}
现在Dog可以说会洒 bean 了。
您会注意到的一件事是,一旦一个类信任另一个类,它就会完全开放自己。没有办法将信任限制在单个方法上。

关于oop - 如何在 Raku 中定义 protected 方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63387285/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com