我正在尝试对抛出异常的函数进行测试,代码如下:
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)我怎么才能修复它?
发布于 2019-03-14 21:28:49
以下格式语句中的foo:
foo: ...是一个label,其中...是它标记的语句。
所以你写的语句是一样的:
bisection(&f, -2, 0), -1;这会将-1保留在sink context中,因此会出现错误消息。
(这条消息有点LTA,因为您的错误很明显是您认为标签语法是一个函数调用语法,虽然错误消息确实指出了错误-- in sink context --但Useless use of "-"是额外的细节,没有帮助,而且可能增加了您的困惑。)
另请参见What's the difference these two function calling conventions?。
发布于 2019-03-16 11:35:42
我只想为那些可能对什么时候可以使用冒号后跟参数调用例程感到困惑的人补充一下-这是调用方法时唯一可用的替代格式:
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 ; # fugetaboutithttps://stackoverflow.com/questions/55161803
复制相似问题