trait is required
Documentation for trait is required assembled from the following types:
language documentation Type system
From Type system
(Type system) trait is required
Defined as:
multi sub trait_mod:<is>(Attribute $attr, :$required!) multi sub trait_mod:<is>(Parameter:D $param, :$required!)
Marks a class or roles attribute as required. If the attribute is not initialized at object construction time throws X::Attribute::Required.
class Correct {
has $.attr is required;
submethod BUILD (:$attr) { $!attr = $attr }
}
say Correct.new(attr => 42);
# OUTPUT: «Correct.new(attr => 42)»
class C {
has $.attr is required;
}
C.new;
CATCH { default { say .^name => .Str } }
# OUTPUT: «X::Attribute::Required => The attribute '$!attr' is required, but you did not provide a value for it.»
You can provide a reason why it's required as an argument to is required
class Correct {
has $.attr is required("it's so cool")
};
say Correct.new();
# OUTPUT: «The attribute '$!attr' is required because it's so cool,but you did not provide a value for it.»