小编Eli*_*sen的帖子

创建并填充Raku对象数组?

我选择在Perl 6中重新设计我的先前代码的一部分,在这种情况下,是棋盘。前两节课进展顺利(或者至少工作了,我知道的很少,我无法说出它们的正确性) ,但我坚持使用第三个。这是代码:

#!/home/hsmyers/rakudo741/bin/perl6
# board.p6 - Beginnings of a PGN toolset. And place to start learning
#            Perl 6/Raku.
use v6d;

#!___________________________________________________________

constant $size = 4;

class Piece {
    my Str @namesOfPieces[$size] = <
        white-rook white-knight white-bishop white-queen
    >;
    my Str @abrevsOfPieces[$size] = <
        R N B Q K B N R
    >;
    my Str @symbolsOfPieces[$size] = <
        &#9814; &#9816; &#9815; &#9813; &#9812; &#9815; &#9816; &#9814;
    >;
    my Str @codeptsOfPieces[$size] = (
        "\x2656", "\x2658", "\x2657", "\x2655",
    );
    has Str …
Run Code Online (Sandbox Code Playgroud)

raku

5
推荐指数
1
解决办法
139
查看次数

为什么梳子在循环内表现不同?

注意:我正在使用这是Rakudo Star版本2019.03.1在REPL上进行所有操作,这是在实现Perl 6.d的MoarVM版本2019.03上构建的Rakudo Star版本2019.03.1。

在euler项目#22中,有一个names.txt文件,类似于“ JERE”,“ HAI”,“ ELDEN”,“ DORSEY”,“ DARELL”,“ BRODERICK”,“ ALONSO”,...

当我读到它时,将其拆分和排序,即可得到我所期望的名称列表。

for '../names.txt'.IO.slurp.split(',').sort -> $name {
    say $name;
}
Run Code Online (Sandbox Code Playgroud)

打印出来

...
"ZONIA"
"ZORA"
"ZORAIDA"
"ZULA"
"ZULEMA"
"ZULMA"
Run Code Online (Sandbox Code Playgroud)

现在,如果我添加 comb()

for '../names.txt'.IO.slurp.split(',').sort -> $name {
    say $name.comb;
}
Run Code Online (Sandbox Code Playgroud)

我越来越

...
(" Z O N I A ")
(" Z O R A ")
(" Z O R A I D A ")
(" Z U L A ")
(" Z U L E M A ")
(" Z U …
Run Code Online (Sandbox Code Playgroud)

raku

5
推荐指数
1
解决办法
71
查看次数

如何为返回完整结构的C函数编写Raku声明?

我有这个C代码:

typedef struct {
  double dat[2];
} gsl_complex;

gsl_complex gsl_poly_complex_eval(const double c[], const int len, const gsl_complex z);
Run Code Online (Sandbox Code Playgroud)

C函数返回整个结构,而不仅仅是指针,因此我不能将Raku声明写为:

sub gsl_poly_complex_eval(CArray[num64] $c, int32 $len, gsl_complex $z --> gsl_complex)
  is native(LIB) is export { * }
Run Code Online (Sandbox Code Playgroud)

有什么建议吗?

nativecall raku

5
推荐指数
2
解决办法
76
查看次数

从 Raku/Perl6,如何读取这个注册表项?

视窗

使用 Raku/Perl6,如何使用 NativeCall 读取值

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System\"EnableLUA"]

使用 RegQueryValueExW?

https://docs.microsoft.com/en-us/windows/win32/api/winreg/nf-winreg-regqueryvalueexw

非常感谢,

-T

编辑 12-27-2019 #1:删除错误代码并插入新代码

这就是我得到的程度。

测试运行字符串:K:\Windows\NtUtil>perl6 -I。-e "使用 WinMount :GetLUA; 说 GetLUA();" RegOpenKeyExW RegOpenKeyExW RtnCode 0

RegQueryValueExW
1
2
RegQueryValueExW   RtnCode 87  (87 = ERROR_INVALID_PARAMETER)
lpData pointer 0
lpcbData data length 0

RegCloseKey
RegCloseKey   RtnCode 0

True
Run Code Online (Sandbox Code Playgroud)

WinMount.pm6

# unit module WinMount;
# WinMount.pm6#`{

   Utilities to mount and dismound drive partitions
   Note: LUA must be unset (0x00000000) for mount to function prpoperly 

   raku -I. -c WinMount.pm6

}

use NativeCall;
use …
Run Code Online (Sandbox Code Playgroud)

winapi raku

5
推荐指数
1
解决办法
220
查看次数

可以在 Raku 中编写 NQP 的优先级解析器

我想弄清楚如何在 Raku 中重写 NQP 的优先级解析器:

Precedence Parser 在这里实现:https : //github.com/Raku/nqp/blob/master/src/HLL/Grammar.nqp#L384 NQP 应该是 Raku 的一个子集,但语法部分似乎是专门的。

如果我想改写 Raku 中 EXPR() 中的 Precedence Parser,那么要使用的 Raku 语法原语是什么?即会cursor_start_cur()翻译成什么?有没有cursor在乐语法?如何设置posRaku Match 对象?会$termcur.MATCH()翻译成什么 等等...

我不是在寻找编写优先解析器的不同方法,而是想知道它是否可以像 NQP 那样在 Raku 中完成。

grammar raku nqp

5
推荐指数
1
解决办法
92
查看次数

raku:在 Raku 2020.10 中支持 utf8-c8 问题

我有一个来自 Wild Wild Web 的文件,它包含格式错误的 UTF8。我在早期版本的 Raku 中处理了其他代码中格式错误的 UTF8。在 2020.10 版本中,我在下面遇到了这个问题。对 utf8-c8 的支持是否已更改(此页面说它应该可以工作,但似乎没有):

https://docs.raku.org/language/unicode#index-entry-UTF-8_Clean-8

这个页面有这个例子:

say slurp($test-file, enc => 'utf8-c8');
Run Code Online (Sandbox Code Playgroud)

现在我在命令行上的代码:

raku -e 'my $a = slurp("zlist"); for $a.lines { .say }'
Malformed UTF-8 near bytes 73 e2 5f at line 55 col 14
  in block <unit> at -e line 1
Run Code Online (Sandbox Code Playgroud)

然后使用这个:

raku -e 'my $a = slurp("zlist", enc => 'utf8-c8'); for $a.lines { .say }'
===SORRY!=== Error while compiling -e
Undeclared routine:
    utf8-c8 used at line 1
Run Code Online (Sandbox Code Playgroud)

我的代码很简单,基本上是从示例中复制的。我究竟做错了什么?

utf-8 raku

5
推荐指数
0
解决办法
77
查看次数

有没有一种直接的方法来检查某个东西是否是 mixin?

Raku mixin有两种(或更多)性质,在同一个容器中组合多个值,或者值与角色。但是,据我所知,没有一种直接的方法可以检查不是由您创建的变量中的“混合性”。

这可能是个伎俩

my $foo = 3 but Stringy;
say $foo.^name ~~ /\+/;# OUTPUT: «?+??»
Run Code Online (Sandbox Code Playgroud)

但是我还缺少其他任何可以直接查找的属性吗?

mixins raku

5
推荐指数
2
解决办法
134
查看次数

如何制作一个继承与 IO::Path 相同方法的类?

我想用 Raku 建立一个课程。这是我到目前为止所拥有的:

unit class Vimwiki::File;

has Str:D $.path is required where *.IO.e;

method size {
    return $.file.IO.s;
}
Run Code Online (Sandbox Code Playgroud)

我想size通过简单地让我的类继承 IO::Path 的方法来摆脱该方法,但我对如何实现这一点有点不知所措。is IO::Path当我尝试创建新对象时尝试抛出错误:

$vwf = Vimwiki::File.new(path => 't/test_file.md');

Must specify a non-empty string as a path
  in block <unit> at t/01-basic.rakutest line 24
Run Code Online (Sandbox Code Playgroud)

raku

5
推荐指数
1
解决办法
131
查看次数

如果我不在 BEGIN 块中放置“require Module”代码,会发生什么情况?

不将条件模块加载放在BEGIN块中有什么问题吗?如果没有BEGIN块,在预编译后更改环境变量仍然会影响加载哪个模块。

my $table;
#BEGIN {
if %*ENV<TABLE_A> {
    require MY_TABLE_A <&get_table>;
    $table = get_table();
}
else {
    require MY_TABLE_B <&get_table>;
    $table = get_width();
}
#}
Run Code Online (Sandbox Code Playgroud)

require raku

5
推荐指数
0
解决办法
100
查看次数

语法的替代版本无法按照我的意愿工作

这段代码$string按照我想要的方式解析:

\n
#! /usr/bin/env raku\n\nmy $string = q:to/END/;\naaa bbb   # this has trailing spaces which I want to keep\n\n       kjkjsdf\nkjkdsf\nEND\n\ngrammar Markdown {\n    token TOP {  ^ ([ <blank> | <text> ])+ $ }\n    token blank { [ \\h* <.newline> ]  }\n    token text { <indent> <content> }\n    token indent { \\h* }\n    token newline { \\n }\n    token content { \\N*? <trailing>* <.newline> } \n    token trailing { \\h+ }\n}\n\nmy $match = Markdown.parse($string);\n$match.say;\n
Run Code Online (Sandbox Code Playgroud)\n

输出

\n
\xef\xbd\xa2aaa bbb\n\n …
Run Code Online (Sandbox Code Playgroud)

grammar raku

5
推荐指数
1
解决办法
142
查看次数

标签 统计

raku ×10

grammar ×2

mixins ×1

nativecall ×1

nqp ×1

require ×1

utf-8 ×1

winapi ×1