运算符通过使用 sub
关键字后跟 prefix
、infix
、postfix
、circumfix
或 postcircumfix
声明;然后是一个冒号和一个在引号构造中的运算符名称。对于(后)环绕运算符,用空格分隔两个部分。
sub hellosay .^name; # OUTPUT: «Sub»hello; # OUTPUT: «Hello, world!»my = sub (, ) ;say .^name; # OUTPUT: «Sub»say (2, 5); # OUTPUT: «7»# Alternatively we could create a more# general operator to sum n numberssub prefix:<Σ>( * )say Σ (13, 16, 1); # OUTPUT: «30»sub infix:<:=:>( is rw, is rw )my (, ) = ('A', 3);say ; # OUTPUT: «A»say ; # OUTPUT: «3»# Swap two variables' values:=: ;say ; # OUTPUT: «3»say ; # OUTPUT: «A»sub postfix:<!>( Int where * >= 0 )say 0!; # OUTPUT: «1»say 5!; # OUTPUT: «120»sub postfix:<♥>( )42♥; # OUTPUT: «I love 42!»sub postcircumfix:<⸨ ⸩>( Positional , Whatever )[1,2,3,4]⸨*⸩; # OUTPUT: «1…4»constant term:<♥> = "♥"; # We don't want to quote "love", do we?sub circumfix:<α ω>( );α♥ω; # OUTPUT: «♥ is the beginning and the end.»
这些运算符使用 扩展标识符 语法;这就是能够使用任何类型的代码点来引用它们的原因。