在 Traits 中§

请参阅主要文档 在上下文中 以了解The is trait

proto trait_mod:<is>(Mu $|{*}

is 适用于任何类型的标量对象,并且可以采用任意数量的命名或位置参数。这是最常用的 trait,并且根据第一个参数的类型采用以下形式。

在模块 Test 中§

请参阅主要文档 在上下文中 以了解sub is

multi is(Mu $gotMu:U $expected$desc = '')
multi is(Mu $gotMu:D $expected$desc = '')

如果 $got$expected 使用 eq 运算符 进行比较为正,则将测试标记为已通过,除非 $expected 是一个类型对象,在这种情况下将使用 === 运算符;接受测试的可选描述作为最后一个参数。

注意: eq 运算符对其操作数进行字符串化,这意味着 is() 不是用于测试更复杂内容(例如列表)的好函数:is (1, (2, (3,))), [1, 2, 3] 通过测试,即使操作数有很大不同。对于这些情况,请使用 is-deeply 例程

my $pdf-documentsub factorial($x{ ... }...;
is $pdf-document.author"Joe"'Retrieving the author field';
is factorial(6),         720,   'Factorial - small integer';
my Int $a;
is $aInt'The variable $a is an unassigned Int';

注意: 如果值之间空格不同,则 is() 将以不同的方式输出失败消息,以显示每个值中的空格。例如,在下面的输出中,第二个测试在 got: 行中显示了文字 \t

is "foo\tbar""foo\tbaz";   # expected: 'foo     baz'␤#      got: 'foo   bar' 
is "foo\tbar""foo    bar"# expected: "foo    bar"␤#      got: "foo\tbar"