我正在尝试对使用以下代码引发异常的函数进行测试:
use v6;
use Test;
plan *;
use lib "lib";
use Math::ConvergenceMethods;
sub f ($x) {return $x + 1;}
{
is-approx: bisection(&f, -2, 0), -1;
dies-ok: { bisection(&f, 3, 2) }, "Incorrect arguments";
}
done-testing;
当我运行它时,它会返回以下警告:
WARNINGS for /home/antonio/Code/perl6/Math-ConvergenceMethods/t/bisection.t:
Useless use of "-" in expression "-1" in sink context (line 13)
Useless use of constant string "Incorrect arguments" in sink context (lines 14, 14)
我该如何解决它?
foo
在以下形式的语句中:
foo: ...
是一个标签,其中...
是它标记的语句。
所以你写的语句和
:bisection(&f, -2, 0), -1;
这会将-1
留在接收器上下文中,因此会出现错误消息。
(该消息有点LTA,因为您的错误显然是您认为标签语法是调用语法的函数,而错误消息确实指示错误 -in sink context
-Useless use of "-"
是其他细节,没有帮助,可能会增加您的困惑。
另请参阅这两个函数调用约定有什么区别?。
只是想为那些可能对何时可以使用冒号后跟参数调用例程感到困惑的人添加 - 这是调用方法时独有的替代格式:
my @list = 1 , 2 , 3 ;
map( { $_ * 2 } , @list ); # "classic" fn call, works with or w/o brackets
@list.map: { $_ * 2 } # OK - calling the map method of @list, no brackets or
# comma (!) required.
map: { $_ * 2 } , @list ; # fugetaboutit