4
#!perl6
use v6;

my $m = 70;
my $n = 30;

( $m div $n ).say;

第一个示例有效,但第二个示例无效。我想这是因为在第二个示例中,变量值是字符串。如果我的猜测是正确的,我怎么能将字符串变量更改为整数变量?

#!perl6
use v6;

my $m = '70';
my $n = '30';

( $m div $n ).say;


# No applicable candidates found to dispatch to for 'infix:<div>'. 
# Available candidates are:
# :(Int $a, Int $b)

#   in main program body at line 7:./perl5.pl
4

2 回答 2

8

您始终可以手动转换为 Int

( $m.Int div $n.Int ).say;

实际上,我希望前缀:<+> 可以像

( +$m div +$n ).say;

但它只是“Num”化,而 sig 需要“Int”,我不确定它是否应该这样。

更新:+$m现在有效。

于 2011-02-19T10:48:49.357 回答
5

我有点认为第二种形式也应该起作用(首先强制转换为 Int,然后进行整数除法)。我会从其他 Perl 6 开发人员那里得到一些反馈,如果他们同意,我会修复它。(更新:结果表明中缀:不是强制的,而是指定返回与参数类型相同的值。这通常不适用于 Str)。

正如 Pat 指出的那样,+$m应该也可以,这是 Rakudo 中长期存在的限制。

一般来说,对类型的强制是用 完成的$variable.Typename,我相信这适用于今天 Rakudo 中的所有数字类型。

于 2011-02-19T11:11:40.033 回答