4
#!perl6
use v6;

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

( $m div $n ).say;

最初の例は機能しますが、2番目の例は機能しません。2番目の例では、変数値が文字列であるためだと思います。私の推測が正しければ、文字列変数を整数変数に変更するにはどうすればよいですか?

#!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

2番目の形式も機能するはずだと思います(最初にIntに強制し、次に整数除算を実行します)。他のPerl6開発者からフィードバックを受け取り、同意する場合は修正します。(更新:infix:は明示的に強制的ではなく、引数と同じ型の値を返すように指定されていることがわかりました。これは一般的にStrでは機能しません)。

Patが指摘したように、これ+$mも機能するはずです。これはRakudoの長年の制限です。

一般に、型への強制はで行われ$variable.Typename、これは今日の楽道のすべての数値型で機能すると思います。

于 2011-02-19T11:11:40.033 に答える