In Functions§
See primary documentation in context for only
The only
keyword preceding sub
or method
indicates that it will be the only function with that name that inhabits a given namespace.
only sub you () ;
This will make other declarations in the same namespace, such as
sub you ( )
fail with an exception of type X::Redeclaration
. only
is the default value for all subs; in the case above, not declaring the first subroutine as only
will yield exactly the same error; however, nothing prevents future developers from declaring a proto and preceding the names with multi
. Using only
before a routine is a defensive programming feature that declares the intention of not having routines with the same name declared in the same namespace in the future.
(exit code 1) ===SORRY!=== Error while compiling /tmp/only-redeclaration.raku Redeclaration of routine 'you' (did you mean to declare a multi-sub?) at /tmp/only-redeclaration.raku:3 ------> <BOL>⏏<EOL>
Anonymous subs cannot be declared only
. only sub {}
will throw an error of type, surprisingly, X::Anon::Multi
.