role Metamodel::Trusting
role Metamodel::Trusting is SuperClass { ... }
Warning: this role is part of the Rakudo implementation, and is not a part of the language specification.
Normally, code in a class or role can only access its own private methods. If
another type declares that it trusts that first class, then access to private
methods of that second type is possible. Metamodel::Trusting
implements
that aspect of the Raku object system.
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
Methods
method add_trustee
method add_trustee($type, Mu $trustee)
Trust $trustee
.
class A {
BEGIN A.^add_trustee(B);
# same as 'trusts B';
}
method trusts
method trusts($type --> List)
Returns a list of types that the invocant trusts.
class A { trusts Int; };
say .^name for A.^trusts; # Int
method is_trusted
method is_trusted($type, $claimant)
Returns 1 if $type
trusts $claimant
, and 0 otherwise.
Types always trust themselves.