--> 在 Perl 6 中是什么意思?
What does --> mean in Perl 6?
在 Rossetta 代码中,the Perl 6 code for Levenshtein distance,子程序签名包含 Str $t --> Int
。
-->
是作用于 $t
的运算符还是其他东西?
指定一个return constraint.
例如,此代码要求 return 值为整数:
sub add (Int $inputA, Int $inputB --> Int)
{
my $result = $inputA+$inputB;
say $result; # Oops, this is the last statement, so its return value is used for the subroutine
}
my $sum = add(5,6);
由于最后一个语句是 say
函数,因此它隐式地 return 是一个布尔值,因此它会抛出一个错误:
11
Type check failed for return value; expected 'Int' but got 'Bool'
in any return_error at src/vm/moar/Perl6/Ops.nqp:649
in sub add at test.p6:5
in block <unit> at test.p6:8
当你得到这个错误时,你查看你的代码并意识到你应该包含一个明确的 return 语句并且可能在子例程之外打印结果:
sub add (Int $inputA, Int $inputB --> Int)
{
my $result = $inputA+$inputB;
return $result;
}
my $sum = add(5,6);
say $sum;
打印出预期的答案,没有任何错误:
11
定义 return 类型的更清晰的方法是使用 returns
(感谢 ):
sub add (Int $inputA, Int $inputB) returns Int
{
my $result = $inputA+$inputB;
return $result;
}
my $sum = add(5,6);
say $sum;
在 Rossetta 代码中,the Perl 6 code for Levenshtein distance,子程序签名包含 Str $t --> Int
。
-->
是作用于 $t
的运算符还是其他东西?
指定一个return constraint.
例如,此代码要求 return 值为整数:
sub add (Int $inputA, Int $inputB --> Int)
{
my $result = $inputA+$inputB;
say $result; # Oops, this is the last statement, so its return value is used for the subroutine
}
my $sum = add(5,6);
由于最后一个语句是 say
函数,因此它隐式地 return 是一个布尔值,因此它会抛出一个错误:
11
Type check failed for return value; expected 'Int' but got 'Bool'
in any return_error at src/vm/moar/Perl6/Ops.nqp:649
in sub add at test.p6:5
in block <unit> at test.p6:8
当你得到这个错误时,你查看你的代码并意识到你应该包含一个明确的 return 语句并且可能在子例程之外打印结果:
sub add (Int $inputA, Int $inputB --> Int)
{
my $result = $inputA+$inputB;
return $result;
}
my $sum = add(5,6);
say $sum;
打印出预期的答案,没有任何错误:
11
定义 return 类型的更清晰的方法是使用 returns
(感谢
sub add (Int $inputA, Int $inputB) returns Int
{
my $result = $inputA+$inputB;
return $result;
}
my $sum = add(5,6);
say $sum;