Wait the light to fall

🎄 7/25. Raku 中 Unicode 的乐趣

焉知非鱼

欢迎来到 Raku One-Liner Advent Calendar 的第7天! 今天,我们将看看2019年Raku日历中的三月份:

img

这里的代码使用 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 支持。 小心使用它别让其他人对你的代码抓狂! 明天见!