role Metamodel::Trusting is SuperClass { ... }

警告:此角色是 Rakudo 实现的一部分,不属于语言规范。

通常,类或角色中的代码只能访问其自己的私有方法。如果另一种类型声明它信任第一个类,那么就可以访问该第二种类型的私有方法。Metamodel::Trusting 实现 Raku 对象系统的该方面。

class A {
    my class B {
        trusts A;   # that's where Metamodel::Trusting comes in 
        method !private_method() {
            say "Private method in B";
        }
    }
    method build-and-poke {
        # call a private method from B 
        # disallowed if A doesn't trust B 
        B.new()!B::private_method();
    }
};
 
A.build-and-poke;   # Private method in B

方法§

方法 add_trustee§

method add_trustee($typeMu $trustee)

信任 $trustee

class A {
    BEGIN A.^add_trustee(B);
    # same as 'trusts B'; 
}

方法 trusts§

method trusts($type --> List)

返回调用者信任的类型列表。

class A { trusts Int};
say .^name for A.^trusts;       # Int

方法 is_trusted§

method is_trusted($type$claimant)

如果 $type 信任 $claimant,则返回 1,否则返回 0。类型始终信任自己。