在 Failure 中§

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

multi method defined(Failure:D: --> Bool:D)

返回 False(故障正式未定义),并将故障标记为已处理。

sub f() { fail };
my $v = f;
say $v.handled# OUTPUT: «False␤» 
say $v.defined# OUTPUT: «False␤» 
say $v.handled# OUTPUT: «True␤»

在 Junction 中§

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

multi method defined(Junction:D:)

检查定义性而不是布尔值。

say ( 3 | Str).defined ;   # OUTPUT: «True␤» 
say (one 3Str).defined;  # OUTPUT: «True␤» 
say (none 3Str).defined# OUTPUT: «False␤»

Failure也被认为是未定义的

my $foo=Failure.new;
say (one 3$foo).defined# OUTPUT: «True␤»

自 6.d 起,此方法将自动线程化。

在 Mu 中§

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

multi method defined(   --> Bool:D)

在类型对象上返回 False,否则返回 True

say Int.defined;                # OUTPUT: «False␤» 
say 42.defined;                 # OUTPUT: «True␤»

一些类型(如Failure)覆盖 defined 以返回 False,即使对于实例也是如此

sub fails() { fail 'oh noe' };
say fails().defined;            # OUTPUT: «False␤»

在 Mu 中§

有关例程定义,请参阅上下文中的主要文档

multi defined(Mu --> Bool:D)

调用对象上的 .defined 方法并返回其结果。