raku相关内容
今天我注意到序列 'A' ... 'AA' 只包含一个元素: >'A' ... 'AA'(一种) 我认为它会包含 27:字母加上最后的 AA. 如果我明确提供一个生成器,它会: >'A', *.succ ... 'AA'(A B C D E F G H I J K L M N O P Q R S T U V W X Y Z AA) 文档说默认生成器是 *.succ 或 *.pred
..
#私有属性示例C类{有 $!w;#私有属性多方法 w { $!w } #getter 方法多方法 w ( $_ ) { #setter 方法警告“不要去改变我的 w!";#一些侧面动作$!w = $_}}我的 $c = C.new$c.w( 42 )说 $c.w #prints 42$c.w: 43说 $c.w #prints 43#但不是$c.w = 44无法修改不可变的 Int (43) 到
..
这是 Raku 的实验: >我的 $x(任何)>我的 $y=11>我的@a=[1, 2][1 2]>我的 %h=a=>'b'{a =>乙}>除非 $x,否则说“nil"零 我可以看到 [] 表示数组文字,{} 表示哈希文字. 我还可以看到 (Any) 的行为类似于 nil - 在上面显示的布尔上下文中返回 false. 我觉得 (Any) 很有趣.文档告诉我 Any 只是 Raku
..
Raku 的正则表达式应该匹配最长的标记. 事实上,在这段代码中可以看到这种行为: raku -e "'AA' ~~ m/A {say 1}|AA {say 2}/";# 2 但是,当文本在变量中时,它的工作方式似乎不同: raku -e "my $a = 'A';我的 $b = 'AA';'AA' ~~ m/$a {say 1}|$b {say 2}/"#1 为什么他们的工作方式不
..
示例服务器: #!/usr/bin/env perl6我的 $listen = IO::Socket::INET.new(:listen, :localhost, :localport(3333));环形 {我的 $conn = $listen.accept;而我的 $buf = $conn.recv(:bin) {$conn.write: $buf;}$conn.close;} 客户: #
..
我想要一个 multi sub,其中一个用于 Int 数组,另一个 multi sub 用于 Int 数组. 这似乎可以解决问题: multi sub abc(Int @array) { 说 10;}multi sub abc(Array[Int] @array) { 说 20;} 但是,构建满足这些约束的文字非常冗长: abc Array[Int].new([1,2,3]);# ->
..
在 Python 中,我可以像这样拼接字符串: solo = 一只快速的棕色狐狸跳过懒狗独奏[3:5] 我知道 substr 和 comb 就足够了,我想知道是否可能,但是.我应该使用角色来执行此操作吗? 解决方案 如何对字符串进行切片 字符串(表示为类 Str)在 Perl 6 中被视为单个值而不是位置数据结构,因此不能使用内置的 [ ] 进行索引/切片 数组索引运算符.
..
我想给一个变量取一个名字,在另一个字符串变量中:my $name = '$a'; 或者干脆 my $name = 'a'; 如何制作变量并使用它?我的意思是这样的(但它不起作用): my $name = '$a';我的 {$name} = 1;# 不起作用说 $a;# 应该是 1 更一般的情况.我有一个变量名称列表,比如 my @names = '$aa' ... '$cc'; 如何声明和使用
..
这个问题的延续,可能还有一个更奇怪的问题. 我可以例如使用 sub 连接两个 regex?(当然,我明白,如何用 regex 做到这一点) 下面的代码是完全错误的,但我希望它能解释我想做什么: 我的正则表达式 sub s12 ( $c, $v) {返回//}我的正则辅音 { }我的正则元音 { }我的正则表达式 op
..
使用 Perl6 解析二进制结构的最佳选择是什么. 在 Perl5 中,我们在 Perl6 上有打包/解包方法,它们似乎是实验性的 是否可以使用 Perl6 语法来解析二进制数据,假设我有一个文件,其中包含以下二进制格式的记录: 结构记录{短 int ut_type;字符 ut_line[UT_LINESIZE];字符 ut_id[4];字符 ut_user[UT_NAMESIZE]
..
在 perl5 中,我曾经为这样的配置文件“做(文件)": ---script.pl start ---我们的@conf = ();做'/path/some_conf_file';...foreach $item (@conf) {$item->{规则} ......---script.pl 结束------/path/some_conf_file 开始---# 任意代码来“填充"@conf@c
..
将数据放入 Perl 6 Native 指针没什么大不了的: sub memcpy( Pointer[void] $source, Pointer[void] $destination, int32 $size ) 是原生的 { * };我的 Blob $blob = Blob.new(0x22, 0x33);我的指针[void] $src-memcpy = nativecast(Pointer
..
callwith 和 samewith 应该做什么?我认为 callwith 应该运行一个与当前子程序同名的子程序,但是使用我传递给它的参数. 来自文档: callwith 使用提供的参数调用下一个匹配的候选由用户并返回该候选人的返回值. 对我来说,这听起来像是在 callwith($x)MAIN 子程序(即 MAIN($a,$b))中/code> 会调用 MAIN($x).
..
我正在试验自定义哈希.以下是尝试为类似配置的散列实现更简单的查找: 使用v6;类 X::Config::KeyNotFound 是异常 {方法消息(){“未找到密钥!";}}# 允许使用 '.' 进行嵌套查找的哈希来分隔键.#(这意味着键本身不能包含点)# 例如:## %h = Config.new(%(a => %(b => 1)));# 我的 $foo = %h;#
..
两个相关的问题.Perl 6 非常聪明,它将字素理解为一个字符,无论是一个 Unicode 符号(如 ä、U+00E4)还是两个或更多组合符号(如p̄ 和 ḏ̣).这个小代码 我的@symb;@symb.push("ä");@symb.push("p" ~ 0x304.chr);# "p̄"@symb.push("ḏ" ~ 0x323.chr);# "ḏ̣"为@symb 说“$_ 有 {$_.c
..
我正在从 Perl5 学习 Perl6. 我在看副词 :exists https://docs.perl6.org/type/Hash#:exists 但没有 :defined 副词 但我很担心,因为 perl5 的 exists &defined:存在和定义有什么区别? 我怎样才能在 Perl6 中做这样的事情? if (定义 $hash{key}) {$hash{key}+
..
有没有办法使用从文件加载的定义来启动 Perl 6 REPL? 即假设我在 test.p6 中有这个: sub abc() { 说 123;} 我希望能够启动 perl6 REPL 并加载该文件,以便我可以交互地使用 abc. 解决方案 我想最简单的方法是将您的代码放在 .pm6 文件中,例如./Foo.pm6,用is export标记有问题的子程序,然后像这样启动Rakudo
..
这是一个简短的 Perl 6 程序,它声明了一个 MAIN 子例程.如果我直接执行程序,我应该只看到输出: $ cat main.pm6sub MAIN { 说“作为程序调用!"} 而且我直接执行程序时看到了输出: $ perl6 main.pm6作为程序调用! 如果我将其作为模块加载,则看不到输出: $ perl6 -I.-Mmain -e “说‘嘿’"嘿 同样,如果我在程序内部使用
..
我一直在尝试将 Perl5 模块 Data::Printer 加载到 Perl6 中,但遇到了困难. 我之前问过这个问题,无法使用内联导入 Perl5 模块:Perl5 转换为 Perl6 并确实从 @raiph 和 Elizabeth 那里得到了有用的建议,但被建议做另一个问题 con@con-VirtualBox:~$ perldoc -lm Data::Printer/usr/loc
..
我有一个如下所示的脚本.意图是使用不同的过滤方法来过滤列表. 这是代码. 23 类 list_filter {4 有@.my_list = (1..20);56 方法 filter($l) { return True;}78#过滤方式9 方法 filter_lt_10($l) {10 if ($l > 10) { return False;}11 返回真;12 }1314#过滤方式15
..