Raku 中的 xx 运算符如何延迟对其左侧代码操作数的评估?
How is the xx operator in Raku able to delay the evaluation of its left-hand side code operand?
'xx' 运算符的有趣之处在于:
(^100).pick xx 10
生成 10 个随机 Int 的列表,而不是一个随机 Int 重复 10 次的列表。
运算符是否被编译器作为特例处理?或者它真的只是我们也可以定义自己的另一个潜艇吗? (如果是这样,我很想知道如何...)
谢谢
是的,这是当前作为特殊形式存在于编译器中的一系列运算符之一。其他示例包括 ||
和 &&
,它们仅根据左侧的 boolification 评估右侧。
目前,还没有办法自己定义这样的运算符(或者至少没有官方支持的运算符;如果准备好修补编译器内部结构,一切皆有可能)。但是,计划用于下一个主要 Raku 语言版本的宏将启用此功能。
'xx' 运算符的有趣之处在于:
(^100).pick xx 10
生成 10 个随机 Int 的列表,而不是一个随机 Int 重复 10 次的列表。
运算符是否被编译器作为特例处理?或者它真的只是我们也可以定义自己的另一个潜艇吗? (如果是这样,我很想知道如何...)
谢谢
是的,这是当前作为特殊形式存在于编译器中的一系列运算符之一。其他示例包括 ||
和 &&
,它们仅根据左侧的 boolification 评估右侧。
目前,还没有办法自己定义这样的运算符(或者至少没有官方支持的运算符;如果准备好修补编译器内部结构,一切皆有可能)。但是,计划用于下一个主要 Raku 语言版本的宏将启用此功能。