加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

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

发布时间:2020-12-15 21:43:13 所属栏目:大数据 来源:网络整理
导读:我试图将匹配对象转换为perl6中的字符串.匹配对象上的Str方法定义为: method Str(Match:D: -- Str:D) 我想我可以用Str($match)来完成这个.它似乎将其转换为字符串,但我使用以下代码的字符串收到错误: my $searchme = "rudolph";my $match = $searchme ~~ /
我试图将匹配对象转换为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

这是一个错误还是我误解了它是如何工作的?

谢谢阅读.

解决方法

我写这个作为答案,即使它实际上是一个错误的不完整的讨论,所以根本不是正常的SO票价.许多评论的替代方案似乎并不好.

这是一个错误.也许你只是打了this.

dd $test1;而不是说$test1;是有用的,它显示BOOTStr $test1 =(没有.perl方法的BOOTStr).

基于那个我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引导程序的实现细节的组合;匹配是一个NQP对象; Str()就是那个不稳定的;并将其分配给标量容器($是一个匿名容器)使得这种奇怪的可见性.

如果我弄清楚的话,我会添加更多.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读