【问题标题】:perl6/rakudo: How can I change the data-type of a variable?perl6/rakudo:如何更改变量的数据类型?
【发布时间】:2011-02-19 10:24:52
【问题描述】:
#!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

【问题讨论】:

    标签: variables types raku rakudo-star


    【解决方案1】:

    您始终可以手动转换为 Int

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

    其实我希望前缀: 能像 in 一样工作

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

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

    更新:+$m 现在可以使用了。

    【讨论】:

      【解决方案2】:

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

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2023-03-30
        • 1970-01-01
        • 2011-06-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多