【问题标题】:Unicode characters in Julia: star symbolJulia 中的 Unicode 字符:星号
【发布时间】:2017-04-06 00:01:27
【问题描述】:

我正在尝试使用一些 unicode 字符来简化几个函数中的符号。在其中一个函数中,我尝试使用星号 (\star),但出现了几个错误和警告。

请查看以下工作示例:

a = [1 2 3; 4 5 6; 7 8 9]

- 给出:一个 3×3 数组{Int64,2}

a⋆ = [1 2 3; 4 5 6; 7 8 9]

- 给出:错误:语法:意外“=”

为什么星号在上面使用时不起作用?它在 Julia 中有设计好的功能吗?

【问题讨论】:

  • Julia 关于有效标识符字符的部分告诉你什么?
  • 我不清楚。我之前看过那个部分。首先,它说:“唯一明确不允许的变量名称是内置语句的名称”。关于 unicode sm 字符 - 作为星号 - 它表示它们“也是有效的标识符,但经过特殊解析。在某些情况下,运算符可以像变量一样使用”。我不清楚星号是否仅用于用户定义的方法。
  • 这就是I found too,当我去寻找时(我以前从未听说过 Julia)。听起来比典型的编程语言更复杂(在这方面)......我想看看 Unicode 类别 U+22C6 (⋆) 是什么,但遗憾的是 unicode.org 上的 the page for it 已关闭(我不清楚是否这是永久性的或暂时的)。但是代码图表说它是一个数学符号,所以...

标签: unicode julia


【解决方案1】:

符号被解析为中缀运算符:

julia> dump(parse("a⋆b"))
Expr
  head: Symbol call
  args: Array{Any}((3,))
    1: Symbol ⋆
    2: Symbol a
    3: Symbol b
  typ: Any

可以允许 作为标识符名称中的字符,但这将是一个重大更改,到目前为止,我们通常已将在 Unicode 标准中通常被认为类似于运算符的字符解析为运算符具有适当的优先级。

【讨论】:

  • 谢谢@StefanKarpinski,这就是我想知道的。我认为没有必要创建一个例外。也许为下标或上标提供更多灵活性会很好,并且可能会消除使用 star 符号或类似符号的优势。但是,我不知道总体上它可能有多困难和/或有价值。
  • 下标 Unicode 可用于标识符,例如v₁ = 10.0,但没有键盘快捷键(也许这个剪切可以修复(也许 \1)。复制粘贴到 REPL 对我有用。
猜你喜欢
  • 2018-07-24
  • 2011-09-25
  • 2021-04-06
  • 2017-12-28
  • 1970-01-01
  • 2018-11-02
  • 2020-12-19
  • 1970-01-01
相关资源
最近更新 更多