is Code
Block
是一个用于小规模代码重用的代码对象。块在语法上由用大括号括起来的一系列语句创建。创建空块的字面量是 {;}
。
如果没有显式签名或占位符参数,块将 $_
作为位置参数,默认值为外部范围的 $_
。因此,如果有的话,它将继承 主题。
my = ;say .^name; # OUTPUT: «Block»say ('hello'); # OUTPUT: «HELLO»say .signature; # OUTPUT: «(;; $_? is raw = OUTER::<$_>)»
块可以在 ->
或 <->
和块之间具有 Signature
my = -> , = 2 ;say (40); # OUTPUT: «42»
如果签名是用 <->
引入的,则参数默认情况下被标记为 rw
:
my = <-> , ;my (, ) = (2, 4);(, );say ; # OUTPUT: «4»
不是 Routine
类型(它是 Block
的子类)的块对 return
是透明的。
sub f()
最后一个语句是块的隐式返回值。
say .(); # OUTPUT: «1»
裸块会按照它们出现的顺序自动执行。
say 1; # OUTPUT: «1»say 3; # OUTPUT: «3»