gpt4 book ai didi

string - 在 perl6 中将匹配对象转换为字符串

转载 作者:行者123 更新时间:2023-12-04 11:33:27 25 4
gpt4 key购买 nike

我试图在 perl6 中将匹配对象转换为字符串。匹配对象上的方法 Str 定义为:

method Str(Match:D: --> Str:D)

我想我可以使用 Str($match) 来完成这个。它似乎将其转换为字符串,但使用带有以下代码的字符串时出现错误:
my $searchme = "rudolph";
my $match = $searchme ~~ /.*dol.*/;
say $match.WHAT;
my $test1 = Str($match);
say $test1.WHAT;
say $test1;

随着输出:
(Match)
(Str)

随着错误:

Cannot find method 'gist': no method cache and no .^find_method in block at .code.tio line 6



但是,如果我运行:
my $searchme = "rudolph";
my $match = $searchme ~~ /.*dol.*/;
say $match.WHAT;
my $test1 = $match.Str;
say $test1.WHAT;
say $test1;

我没有得到任何错误,结果:
(Match)
(Str)
rudolph

这是错误还是我误解了它的工作原理?

谢谢阅读。

最佳答案

我正在写这个作为答案,即使它实际上是对错误的不完整讨论,所以根本不是正常的票价。大量评论的替代方案似乎并没有更好。

这是一个错误。也许你刚刚打过高尔夫球 this .
dd $test1;而不是 say $test1;很有帮助,因为它显示 BOOTStr $test1 = (BOOTStr without .perl method) .

基于此,我 searched the rakudo repo for BOOTStr 这导致了上述问题。

打高尔夫球进一步导致:

say $ = Str(Match.new);

请注意,这些都很好:
say Str(Match.new);
say $ = Int(Match.new);
say $ = Str(Date.new: '2015-12-31');

这似乎是泄露了一些关于 Rakudo/NQP/MoarVM bootstrap 的实现细节的组合; Match是一个 NQP 对象; Str()在那是不稳定的;并将其分配给 Scalar容器( $ 是一个匿名的)使这种不稳定可见。

当/如果我弄清楚时,我会添加更多。

关于string - 在 perl6 中将匹配对象转换为字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51571155/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com