小编Sul*_*tan的帖子

Perl 6在键入数组时报告"无法取消装箱类型对象"

我怀疑这可能是Rakudo的一个错误,但我今天刚刚开始玩Perl 6,所以我很有可能犯了一个错误.在这个简单的程序中,在sub中声明一个类型化数组似乎会使Perl 6编译器生气.删除数组上的类型注释可以消除编译器错误.

这是一个简单的素数查找程序:

#!/usr/bin/env perl6
use v6;

sub primes(int $max) {
    my int @vals = ^$max; # forcing a type on vals causes compiler error (bug?)
    for 2..floor(sqrt($max)) -> $i {
        next if not @vals[$i];
        @vals[2*$i, 3*$i ... $max-1] = 0;
    }
    return ($_ if .Bool for @vals)[1..*];
}

say primes(1000);
Run Code Online (Sandbox Code Playgroud)

在Rakudo Star 2016.07.1(来自Fedora 24 repos),该程序给出以下错误:

[sultan@localhost p6test]$ perl6 primes.p6 
Cannot unbox a type object
  in sub primes at primes.p6 line 8
  in block <unit> at primes.p6 line 13 …
Run Code Online (Sandbox Code Playgroud)

rakudo perl6

8
推荐指数
1
解决办法
206
查看次数

标签 统计

perl6 ×1

rakudo ×1