🎄 7/25. Raku 中 Unicode 的乐趣
— 焉知非鱼欢迎来到 Raku One-Liner Advent Calendar 的第7天! 今天,我们将看看2019年Raku日历中的三月份:
这里的代码使用 ASCII 领地之外的三个字符。 我们甚至可以再添加一个 Unicode 字符:
say π × $𝜌²
在 Raku 中,您可以在标识符中自由地使用 Unicode 字符,例如变量或函数名。 但最重要的是,有许多预定义的符号,如 π,它们有 ASCII 替代品。 检查文档页面 Unicode 与 ASCII 符号,以查看可在 Raku 中使用的全部 Unicode 字符集。
使用 ASCII,可以通过以下方式重写上述单行程序:
say pi * $r ** 2
让我们回到第2天的附加题代码,看看 Unicode 字符可以用在什么位置:
sub f($n) {
($n <<*>> (1...1000 / $n)).grep: * < 1000
}
say (f(3) ∪ f(5)).keys.sum;
这里有一些因素。
首先,超运算符 <<*>>
可以用适当的法语引号替换:«*»
,乘法字符可以是我们今天使用的交叉:«×»
。 同样可以应用于除法:÷
。
其次,序列运算符的三个点可以用一个 Unicode 字符替换:…
(如果您在 Word 中编程,则在键入完整停止三次后自动获得此字符)。
最后,在最后一行中,使用 Unicode 字符 ∪
来查找两个集合的交集。 这里的字符与您在数学中使用的字符相同(是吗?),但您可以使用其 ASCII 版本:f(3) (|) f(5)
。
所以,我们有一个很棒的圣诞礼物,编程语言中最好的 Unicode 支持。 小心使用它别让其他人对你的代码抓狂! 明天见!