在Perl中,表达式“aa”。。“bb”
创建一个包含以下字符串的列表:
aa ab ac ad ae af ag ah ai aj ak al am an ao ap aq ar as at au av aw ax ay az ba bb
但是,在Raku中(至少在Rakudo v2021.08中),相同的表达式创建:
aa ab ba bb
更糟糕的是,“12”。。“23”
在Perl中创建一个带有数字12、13、14、15、…、23的字符串列表,在Raku中,相同的表达式创建列表(“12”、“13”、“22”、“23”)
。
医生们似乎对这种行为保持沉默;至少,我在那里找不到解释。有什么方法可以获得Raku范围的Perl行为吗?
(我知道第二个问题可以通过将typecast转换为Int来解决。但这不适用于第一个问题。)
通过使用带有自定义生成器的序列,可以获得Perl行为:
say 'aa', *.succ … 'bb';
# OUTPUT: «aa ab ac ad ae af ag ah ai aj ak al am an ao ap aq ar as at au av aw ax ay az ba bb»
say '12', *.succ … '23';
# OUTPUT: «12 13 14 15 16 17 18 19 20 21 22 23»
我不明白为什么需要自定义生成器函数;根据文档,*。然而,在当前的Rakudo实现中,Str的默认生成器似乎是将它们转换成字母。
基于烘焙中的一个SPECT测试,此行为似乎是正确的/预期的(用于序列)。历史设计文档中也对其进行了一些讨论,快速浏览一下,这种行为的主要原因似乎涉及Perl行为和完全Unicode支持的概念问题。但我不确定细节。
我也不确定是否打算/规定将相同的行为应用于范围(
。
)而不仅仅是序列(…
)。我并没有立即看到一个包含多个字符、非数字endpoint的烘焙测试,因此无论哪种方式,行为都可能没有完全指定。但我可能错过了一个。
我希望其他人也能回答这个问题,因为我不知道为什么会发生这种行为,或者为什么没有记录在案。显然,文档可以在这里使用更多信息。烤面包也可能需要对范围进行更多的测试。
(哦,
'12'..'23'
案例的半个解决方案是:您已经注意到,您可以将endpoint强制转换为数字类型以获得所需的输出。但是您实际上不需要强制转换两个endpoint–只需转换底部。12..'23'
仍然生成完整的输出。作为推论,因为^'23'
是的糖>0..^'23'
,使用
主要内容:算术运算符,实例,比较运算符,实例,实例,赋值运算符,实例,位运算,实例,逻辑运算符,实例,引号运算,实例,其他运算符,实例,运算符优先级,实例运算符是一种告诉编译器执行特定的数学或逻辑操作的符号,如: 3+2=5。 Perl 语言内置了丰富的运算符,我们来看下常用的几种: 算术运算符 比较运算符 逻辑运算符 赋值运算符 位运算符 引号运算符 其他运算符 运算符优先级 算术运算符 表格实例中我们设置变量 $a 为 10, $b 为 20。 运算符 描述 实例 + 加法运算 $a + $
运算符是一种告诉编译器执行特定的数学或逻辑操作的符号,如: 3+2=5。 Perl 语言内置了丰富的运算符,我们来看下常用的几种: 算术运算符 比较运算符 逻辑运算符 赋值运算符 位运算符 引号运算符 其他运算符 运算符优先级 算术运算符 表格实例中我们设置变量 $a 为 10, $b 为 20。 运算符 描述 实例 + 加法运算 $a + $b 结果为 30 - 减法运算 $a - $b 结果为
本文向大家介绍Perl中的Backstick运算符,包括了Perl中的Backstick运算符的使用技巧和注意事项,需要的朋友参考一下 在Perl程序中执行任何Unix命令的最简单方法是使用backstick运算符。您只需将命令放入backstick运算符中,这将导致命令执行并返回其结果,该结果可以存储如下: 执行以上代码后,它将列出当前目录中可用的所有文件和目录-
问题内容: 我对String串联感到困惑。 输出为: 50abc20 50abc1010 我想知道为什么在两种情况下都将 20 + 30 加在一起,但是 10 + 10 需要加上括号(s1)而不是串联到String(s2)。请在此处说明String运算符的工作方式。 问题答案: 加法保持关联。以第一种情况 在第二种情况下:
本文向大家介绍通过+(字符串串联)运算符进行字符串串联。,包括了通过+(字符串串联)运算符进行字符串串联。的使用技巧和注意事项,需要的朋友参考一下 您可以使用Java的“ +”运算符来连接字符串。 示例 输出结果
目标 了解实例化 String 对象和设置其值的多种方法 了解字符串串联和方法链 熟悉 Java 语言的算术运算符 字符串 目前为止,您已经遇到过多种类型的 String。在 Java 语言中,字符串是 String 类型的一级对象,包含可帮助您处理它们的方法。 在 C 语言中,处理字符串需要大量精力,因为它们是您必须操作的 8 位字符组成的以 null 结尾的数组。(在字符串方面,与 C 语言最