首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在接收器上下文中表达式"-1“中"-”的无用用法(第13行)

在接收器上下文中表达式"-1“中"-”的无用用法(第13行)
EN

Stack Overflow用户
提问于 2019-03-14 19:50:23
回答 2查看 132关注 0票数 5

我正在尝试对抛出异常的函数进行测试,代码如下:

代码语言:javascript
复制
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;

当我运行它时,它会返回以下警告:

代码语言:javascript
复制
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)

我怎么才能修复它?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-03-14 21:28:49

以下格式语句中的foo

代码语言:javascript
复制
foo: ...

是一个label,其中...是它标记的语句。

所以你写的语句是一样的:

代码语言:javascript
复制
bisection(&f, -2, 0), -1;

这会将-1保留在sink context中,因此会出现错误消息。

(这条消息有点LTA,因为您的错误很明显是您认为标签语法是一个函数调用语法,虽然错误消息确实指出了错误-- in sink context --但Useless use of "-"是额外的细节,没有帮助,而且可能增加了您的困惑。)

另请参见What's the difference these two function calling conventions?

票数 7
EN

Stack Overflow用户

发布于 2019-03-16 11:35:42

我只想为那些可能对什么时候可以使用冒号后跟参数调用例程感到困惑的人补充一下-这是调用方法时唯一可用的替代格式:

代码语言:javascript
复制
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
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55161803

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档