gpt4 book ai didi

raku - map 签名与Whatever不匹配? x 对 X 对 xx

转载 作者:行者123 更新时间:2023-12-04 05:45:14 26 4
gpt4 key购买 nike

这里的最后一行导致 map 调用的签名不正确:

my @array=[0,1,2];
say "String Repetition";
say @array.map({($_ x 2)});
say @array.map: * x 2;

say "\nCross product ";
say @array.map({($_ X 2)});
say @array.map: * X 2;

say "\nList Repetition";
say @array.map({$_ xx 2});
say @array.map: * xx 2;

输出为:
String Repetition
(00 11 22)
(00 11 22)

Cross product
(((0 2)) ((1 2)) ((2 2)))
(((0 2)) ((1 2)) ((2 2)))

List Repetition
((0 0) (1 1) (2 2))
Cannot resolve caller map(Array:D: Seq:D); none of these signatures match:
($: Hash \h, *%_)
(\SELF: █; :$label, :$item, *%_)

x 运算符返回一个 Str,X 返回一个列表列表,xx 返回一个列表。

这是否以某种方式改变了使用whatever。为什么会发生此错误?提前致谢

最佳答案

让我看看我能不能清楚地解决这个问题。如果我没有,请询​​问。

简短回答:xxWhatever 一起具有特殊含义,所以它没有创建 WhateverCode与其他示例一样。

让我们看看我是否可以用长答案来直截了当。

首先,定义。 * 称为 Whatever .它通常用于 curry 的情况

I'm not too happy with this name, which points at functional-language-currying, but does not seem to be used in that sense, but in the sense of stewing or baking. Anyway.



curry 它变成 WhateverCode .所以一个*本身就是Whatever,带有一些东西的*就是WhateverCode,凭空创造一个 block 。

然而,这不会自动发生,因为有时我们需要随便什么就随便什么。您有一些异常(exception) listed on Whatever documentation .其中之一是使用 xx , 因为 xx连同 Whatever应该创建无限列表。

但这不是我正在做的,你可以说。 *前面是要相乘的数字。嗯,是。但是 this code在 Actions.nqp(从源代码生成代码)中指的是中缀 xx .所以这并不重要。

所以,回到简短的回答:你不能总是使用 *与其他元素一起创建代码。某些运算符,例如那个,.. 或 ... 在 * 附近将具有特殊含义,因此您需要使用其他东西,例如占位符参数。

关于raku - map 签名与Whatever不匹配? x 对 X 对 xx,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54965556/

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