在数组中§

有关方法,请参阅上下文中的主要文档

method of()

返回调用者的值的类型约束。默认情况下,即如果在声明期间未给出类型约束,该方法将返回(Mu)

my @a1 = 1'two'3.14159;              # (no type constraint specified) 
say @a1.of;                              # OUTPUT: «(Mu)␤» 
 
my Int @a2 = 123;                    # (values must be of type Int) 
say @a2.of;                              # OUTPUT: «(Int)␤» 
@a2.push: 'd';
CATCH { default { put .^name''.Str } };
# OUTPUT: «X::TypeCheck::Assignment: Type check failed in assignment to @a2; expected Int but got Str ("d")␤»

在哈希中§

有关方法,请参阅上下文中的主要文档

method of(Hash:D:)

返回调用者的值的类型约束。默认情况下,即如果在声明期间未给出类型约束,该方法将返回(Mu)

my %h1 = 'apples' => 3'oranges' => 7;  # (no type constraint specified) 
say %h1.of;                              # OUTPUT: «(Mu)␤» 
 
my Int %h2 = 'oranges' => 7;             # (values must be of type Int) 
say %h2.of;                              # OUTPUT: «(Int)␤»

在关联角色中§

有关方法,请参阅上下文中的主要文档

method of()

如上所示,Associative实际上是一个参数化角色,它可以使用不同的类作为键和值。正如在文档顶部所看到的,默认情况下,它将键强制转换为Str,并为值使用非常通用的Mu

my %any-hash;
say %any-hash.of# OUTPUT: «(Mu)␤»

当使用特定类实例化Associative时,值是您使用的第一个参数

class DateHash is Hash does Associative[Cool,DateTime{};
my %date-hash := DateHash.new;
say %date-hash.of# OUTPUT: «(Cool)␤»

在标量中§

有关方法,请参阅上下文中的主要文档

method of(Scalar:D: --> Mu)

返回容器的类型约束。

示例

my Cool $x = 42;
say $x.VAR.of;                  # OUTPUT: «(Cool)␤»

在变量中§

有关特征,请参阅上下文中的主要文档

multi trait_mod:<of>(Mu:U $targetMu:U $type)

设置绑定到变量的容器的类型约束。

my $i of Int = 42;
$i = "forty plus two";
CATCH { default { say .^name' '.Str } }
# OUTPUT: «X::TypeCheck::Assignment Type check failed in assignment to $i; expected Int but got Str ("forty plus two")␤»

您可以在编译时定义的任何值中使用类型约束,包括常量

constant \T = Int;
my $i of T = 42;

这将等同于前面的定义。

在位置角色中§

有关方法,请参阅上下文中的主要文档

method of()

返回位置容器元素的类型约束,即上面定义中的T,如您所见,默认为Mu。它作为类型对象返回。

my @þ;
say @þ.of.^name;   # OUTPUT: «Mu␤ 
my Str @þð;
say @þð.of.raku;   # OUTPUT: «Str␤» 
say (my int @).of# OUTPUT: «(int)␤» 

在定量哈希角色中§

有关方法,请参阅上下文中的主要文档

method of()

返回此QuantHash的值可能具有的值类型。对于Setty,这通常是Bool,对于Baggy,这通常是UInt,对于Mixy角色,这通常是Real

在代码中§

请参阅 上下文中的 method of 的主要文档

method of(Code:D: --> Mu)

返回 Code返回类型约束

say -> () --> Int {}.of# OUTPUT: «(Int)␤»