gpt4 book ai didi

signature - Perl6 - $ : for in some subroutine Signatures 是什么

转载 作者:行者123 更新时间:2023-12-03 06:56:15 24 4
gpt4 key购买 nike

我在 another question 中遇到此错误消息我想知道签名中的 $: 部分是什么意思?

Cannot resolve caller index(Str: Str, Any); none of these signatures match:
(Str:D $: Cool:D $needle, *%_)
(Str:D $: Str:D $needle, *%_)
(Str:D $: Cool:D $needle, Cool:D $pos, *%_)
(Str:D $: Str:D $needle, Int:D $pos, *%_)

最佳答案

$: 是两个不同的、不相关的标记,一个 $ 和一个 :,它们被混合在一起。

<小时/>

$ 代表单个项目1,也称为标量2

单个项目/标量尚未指定名称,因此无法引用它。并且已经有足够的参数(Str:D)让您和编译器知道该参数是标量(单个字符串)。无论哪种方式,$ 都是多余的,并且 Elizabeth has made a related change .

<小时/>

: 是一个特殊的参数分隔符。 (通常的参数分隔符是逗号,。)

它只能在方法或独立签名的第一个参数之后立即使用。它不能用在不是方法的例程的签名中。

如果用作签名中第一个参数之后的参数分隔符,则会将该参数标记为与方法的 "invocant" 相对应。 .

(如果不使用,则 invocant 参数是隐式的。)

无论签名是否显式列出调用者参数,相应的调用者参数都会到达,并别名为self。但是,如果显式指定了 invocant 参数,则可以为其提供附加/备用名称和/或显式约束其类型。

<小时/>

疯狂的夸张脚注增加娱乐性。如果它们让你感到困惑,就忘记你曾经读过它们吧。

1单个项目指的是自然是单个事物的数据,例如数字42OR自然是复合数据事物(如数组)被视为单个事物(如数组)。 (你看到我在那里做了什么吗?)我想指出一个助记符,$ 符号就像一个 S(表示单个),上面覆盖着一个 I (对于项目),反之亦然。对我来说,这代表了强调任何数据的单一项目性质,隐藏任何复数方面的想法,即使它实际上是一个数组或其他复合数据项目。

2“标量”是一个传统的计算术语。 Wikipedia's Scalar disambiguation page列出“变量(计算),或标量,一次只能保存一个值的原子量”作为定义。此外,单个项目又名标量(全部小写)通常/通常是 Scalar (大写S),单个项目的特殊情况,即S单个I项目容器 包含单个I项(可以是被视为单个事物的复合数据)。

关于signature - Perl6 - $ : for in some subroutine Signatures 是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50202897/

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