我以为在互联网上的某个地方会有一个简单的答案,但似乎我找不到解决方案.我首先想知道是否有一个简单的方法或功能:
例如,~~或array.contains()来自Perl 5
在Perl 6中有多少不同的方法可以实现这一结果也很好,因为考虑到问题的情况,有些方法可能比其他方法更好.
所以我一直在努力让电子与Perl6一起工作,看起来就像我所有的黑客攻击工作让它们发挥作用,它只是不想做它的事情.我使用了以下脚本(git上的电子仓库中的一个示例):
#!/usr/bin/env perl6
use v6;
use Electron;
my $app = Electron::App.instance;
LEAVE {
$app.destroy if $app.defined;
}
say Electron::Dialog.show-open-dialog.perl;
say Electron::Dialog.show-save-dialog.perl;
say Electron::Dialog.show-message-box.perl;
Electron::Dialog.show-error-box("Text", "Content");
prompt("Press any key to exit");
Run Code Online (Sandbox Code Playgroud)
在运行时我收到此错误:
Dynamic variable @*INC not found
in submethod initialize at C:\rakudo\share\perl6\site\sources\42D84B59BC3C5A414EA59CC2E3BC466BBAF78CDA line 54
in method instance at C:\rakudo\share\perl6\site\sources\42D84B59BC3C5A414EA59CC2E3BC466BBAF78CDA line 33
in block <unit> at test.p6 line 9
Actually thrown at:
in method throw at C:\rakudo/share/perl6/runtime/CORE.setting.moarvm line 1
in block at C:\rakudo\share\perl6\site\sources\42D84B59BC3C5A414EA59CC2E3BC466BBAF78CDA line 55
in submethod initialize at C:\rakudo\share\perl6\site\sources\42D84B59BC3C5A414EA59CC2E3BC466BBAF78CDA line 48 …Run Code Online (Sandbox Code Playgroud) 所以我一直在深入研究Perl 6,并一直在寻找使用Perl 6的运算符定义来解释另一种语言.我知道这可以通过解析代码来完成,但我希望推动Perl 6的功能,看看它能做些什么.拥有此功能还可以使解析更容易
我正在尝试以C风格格式制作变量定义.(语言并不重要)
就像是:
char foo;
Run Code Online (Sandbox Code Playgroud)
其中char表示类型,foo是变量名称.根据我的理解,char可以使用运算符定义来解释,如下所示:
sub prefix:<char>($input) {
say $input;
}
Run Code Online (Sandbox Code Playgroud)
它调用子程序,将foo作为$ input.这里的想法是使用foo作为字符串并在某处的哈希中保存它的引用.这个问题是Perl 6似乎看到任何裸字作为函数调用,并且当它找不到"未声明的例程"时会抱怨.
我看可能是到处找一个答案,这让我仍然认为这是可能的唯一的事情就是QW从Perl 5的功能现在是<> Perl 6中的<>显然是一个运营商,这导致我相信在某处定义了一个子程序,它告诉操作员如何工作以及如何处理裸字输入.
所以对我的问题:
是否有一种方法可以像在<>运算符中那样接受单行输入到子程序中?
干杯!
perl6 ×3
arrays ×1
containers ×1
declaration ×1
electron ×1
list ×1
parsing ×1
perl ×1
raku ×1