trait is required (Attribute)
Documentation for trait
is required (Attribute) assembled from the following types:
multi sub trait_mod:<is> (Attribute , :!)
is required will mark the attribute as to be filled with a value when the object is instantiated. Failing to do so will result in a runtime error.
my = C.new;CATCH# OUTPUT: «X::Attribute::Required: The attribute '$!a' is required, but you did not provide a value for it.␤»
Available as of 6.d language version (early implementation exists in Rakudo compiler 2018.08+): You can specify a reason why the attribute is required:
my = D.new;CATCH# OUTPUT: «X::Attribute::Required: The attribute '$!a' is required because it is a good idea,␤but you did not provide a value for it.␤»
is required doesn't just affect the default constructor, it checks for the attribute at a lower level, so it will work for custom constructors written using bless.