Represent a type without any additional features
class RakuAST::Type::Capture { }
The RakuAST::Type::Capture class represents a stand-in Raku type with an optional type-smiley.
RakuAST::Type::Capture object is typically created when parsing Raku Programming Language code. So most developers will only need to know how to introspect the objects created.
say $type.definite; # True, False or Bool
Returns True if a defined constraint was indicated ("D"), False if a not defined constraint was indicated ("U"), or the Bool enum if no constraint was indicated ("_" or "" or no smiley).
say $type.name; # RakuAST::Name.from-identifier("foo")
Returns the L<RakuAST::Name>|/type/RakuAST::Name object of this RakuAST::Type::Capture object.
say $type.smiley; # "D", "U" or ""
Returns whatever was (possibly implicitly) specified with the .smiley named argument at object creation.
There are several ways to create a RakuAST::Type::Capture object. For simple identifiers it is recommended to use the alternate .from-identifier method to create a RakuAST::Type::Capture object. Otherwise one can use the standard .new method.
my $type = RakuAST::Type::Capture.new(
RakuAST::Name.from-identifier("D"),
:smiley<D>
);
dd $type; # ::T:D
Creates a RakuAST::Type::Capture object from the given RakuAST::Name object and an optional :smiley named argument that should be one of "D", "U", "_" or "".
my $type = RakuAST::Type::Capture.from-identifier('T', 'D');
dd $type; # ::T:D
Creates a RakuAST::Type::Capture object from the given simple identifier string, and an optional type-smiley string.