标签: perl6

Perl 6中的数组变量数组

如何在Perl 6中声明和创建"数组数组"类型的变量?在Perl的6文档中,没有任何相关内容.从理论上讲,我可以做到这一点

@@var1
Run Code Online (Sandbox Code Playgroud)

但这不起作用.

perl6

4
推荐指数
1
解决办法
568
查看次数

是否所有Instants都与Perl 6中的机器相关?

这是我可以找到定义的情况,但我不太了解它.从官方文档:

瞬间是以原子秒为单位测量的特定时刻,具有分数.它不依赖或意识到任何时代.

我不明白如何在没有时代的情况下指定特定时刻?它没有参考点吗?在两台不同的Linux机器上,似乎两个Instants都提到自POSIX Epoch以来的几秒钟.我的猜测是Instants确实有一个有效的开始时间,但是开始时间是依赖于实现/设备的.

# machine1
say(now * (1/3600) * (1/24) * (1/365.25)); # years from zero point
46.0748226200715

# machine2
say(now * (1/3600) * (1/24) * (1/365.25)); # years from zero point
46.0748712024946
Run Code Online (Sandbox Code Playgroud)

无论如何,我的问题是,可以依赖Instants在不同进程之间保持一致,还是只用于"内部"使用?

perl6

4
推荐指数
1
解决办法
95
查看次数

为什么Perl 6 Str会做位置角色,如何更改[]?

我正在玩一个字符串的位置界面.我知道如何在Perl 6中像Python一样切割字符串?,但我很好奇,如果我能让这件事只是为了咯咯笑.

我想出了这个例子.阅读职位很好,但我不知道如何设置multi处理任务:

multi postcircumfix:<[ ]> ( Str:D $s, Int:D $n --> Str ) {
    $s.substr: $n, 1
    }
multi postcircumfix:<[ ]> ( Str:D $s, Range:D $r --> Str ) {
    $s.substr: $r.min, $r.max - $r.min + 1
    }
multi postcircumfix:<[ ]> ( Str:D $s, List:D $i --> List ) {
    map( { $s.substr: $_, 1 }, @$i ).list
    }

multi postcircumfix:<[ ]> ( Str:D $s, Int:D $n, *@a --> Str ) is rw {
    put …
Run Code Online (Sandbox Code Playgroud)

role perl6 multimethod

4
推荐指数
1
解决办法
270
查看次数

perl6 precission base4转换

转换为base4时,Perl 6的精度会下降.如何保持精度?

'0.2322130120323232322110'.parse-base(4)
--> perl6 output :         0.728295262649453
--> high precission value: 0.728295262649453434278257191181182861328125
Run Code Online (Sandbox Code Playgroud)

问题是,当转换0.728295262649453base(4),输出是不是原来的号码.

0.72829526264945.base(4)
--> output:   0.232213012032323232210333
--> original: 0.2322130120323232322110
Run Code Online (Sandbox Code Playgroud)

请解释一下,如何在转换后获得相同的值?

perl6

4
推荐指数
1
解决办法
143
查看次数

什么Perl 6模块可以读/写XLSX文件?

我试图用Perl 6读取和更新一些MS Excel(xlsx)文件.我应该下载哪些模块?

我通过谷歌搜索看到一个Perl 6作家:

https://github.com/evanmiller/XLSX-Writer

这是用于写作的吗?

我没有看到任何特定于Perl 6的模块在XLSX中读取.是否有一些阅读模块?

xlsx perl6 xlsxwriter

4
推荐指数
1
解决办法
257
查看次数

从Native指针中获取数据

将数据导入Perl 6 Native指针并不是什么大不了的事:

sub memcpy( Pointer[void] $source, Pointer[void] $destination, int32 $size ) is native { * };
my Blob $blob = Blob.new(0x22, 0x33);
my Pointer[void] $src-memcpy = nativecast(Pointer[void], $blob);
my Pointer[void] $dest-memcpy = malloc( 32 );
memcpy($src-memcpy,$dest-memcpy,2);
my Pointer[int] $inter = nativecast(Pointer[int], $dest-memcpy);
say $inter; # prints NativeCall::Types::Pointer[int]<0x4499560>
Run Code Online (Sandbox Code Playgroud)

但是,我认为没有办法让它们脱离Pointer[int]另一个而不是创建一个函数来完成它,因为它nativecast显然是在相反的方向上工作,或者至少不是在向非本地类型转换的方向(这应该是显而易见的名称).你会怎么做?

更新:例如,使用数组会使其更加可行.然而

my $inter = nativecast(CArray[int16], $dest);
.say for $inter.list;
Run Code Online (Sandbox Code Playgroud)

这有效,但会产生错误: Don't know how many elements a C array returned from a library

更新2:继克里斯托夫的回答(谢谢!)之后,我们可以对此进行更多细化,然后我们将这些值重新纳入 …

perl6 nativecall

4
推荐指数
2
解决办法
142
查看次数

无用的哈希编写器,还是不能修改不可变的哈希?

这段代码:

constant %what = { doesn't => 'change' }; 
%what = { will => "change" } 
Run Code Online (Sandbox Code Playgroud)

应该说“不能修改不可变的哈希”。但是,它说:

Potential difficulties:
Useless use of hash composer on right side of hash assignment; did you mean := instead?
Run Code Online (Sandbox Code Playgroud)

Positionals有几乎相同的问题,但错误有所不同。在这种情况下,它不能修改不可变的,而只能修改一个Str:

constant @what = <does not change>;
@what = <does change> # Cannot modify an immutable Str (does)
Run Code Online (Sandbox Code Playgroud)

标量工作正常。这是LTA错误消息的情况,还是我缺少的一些容器魔术在起作用?

perl6

4
推荐指数
1
解决办法
100
查看次数

(标识符)项vs.常量vs.空签名例程

标识符术语在文档中与常量一起定义,使用情况几乎相同,尽管术语在运行时计算其值,而常量在编译时获取。可能会使术语使用全局变量,但这是遥不可及的,因此我想这不是它们的用例。OTOH,它们可能只是带有空签名的例程:

sub term:<þor> { "Is mighty" }
sub Þor { "Is mighty" }

say þor, Þor;
Run Code Online (Sandbox Code Playgroud)

但是您已经可以使用空签名定义例程。但是,可以编写以下错误:

say Þor ~ Þor;
Run Code Online (Sandbox Code Playgroud)

与术语不同,它将产生一个many positionals passed; expected 0 arguments but got 1。但是,这似乎有些牵强,您可以通过在末尾添加()来节省麻烦。

另一个可能的用例是违反普通标识符的规则

sub term:<?> { True }
say ?; # True
Run Code Online (Sandbox Code Playgroud)

我还有其他用例吗?

perl6

4
推荐指数
1
解决办法
99
查看次数

在Perl6中是否有与Go goroutines相同的功能?

我知道

perl6 -e '@r = do for ^500 {start { .say; sleep 3 }}; await @r'
Run Code Online (Sandbox Code Playgroud)

moar在我的系统上创建了大约十几个线程并将它们用作承诺池,但我想像Go一样立即启动它们.那可能吗?

go perl6

3
推荐指数
1
解决办法
344
查看次数

如何获得没有的数量.perl 6%HASH中的按键?

任何人都可以帮助知道如何计算不.在PERL 6中,哈希中的键是什么?寻找没有手动循环的东西.

提前致谢!

编辑:到目前为止尝试了以下但没有运气.

my %hash =  1 => "one", 2 => <21,22,23>, 3 => "three"  ;

my $count = %hash.keys [ makes it a flat list ]
my $count = %hash.count [no such method]
my $count = keys %hash [provides all the keys but not the count]
Run Code Online (Sandbox Code Playgroud)

hash count perl6

3
推荐指数
1
解决办法
376
查看次数

标签 统计

perl6 ×10

count ×1

go ×1

hash ×1

multimethod ×1

nativecall ×1

role ×1

xlsx ×1

xlsxwriter ×1