在 Julia 变量名中下标多个字符?

Posted

技术标签:

【中文标题】在 Julia 变量名中下标多个字符?【英文标题】:Subscript multiple characters in Julia variable name? 【发布时间】:2016-07-21 08:38:15 【问题描述】:

我会写:

x\_m<TAB> = 5

在 Julia 中获取 x 下标 m 作为变量名。如果我想下标一个单词而不是单个字符怎么办?这个

x\_max<TAB> = 5

不起作用。然而,

x\_m<TAB>\_a<TAB>\_x<TAB> = 5

确实有效,只是很不舒服。有没有更好的办法?

【问题讨论】:

不幸的是,并非所有的 ASCII 字符都以 unicode 子脚本或超级脚本的形式存在,因此通常这不起作用。值得注意的是缺少上标CFQSXYZq 和所有下标大写字母,以及下标bcdfgqwyz。不要问我为什么 unicode 联盟决定 Fₓ 应该工作,而不是 FyFz。疯狂的unicode。 en.wikipedia.org/wiki/… @MattB。也许他们只能选择有限数量的字符,因此不得不删除一些被认为不太有用的字符,例如下标 y。无论如何,我想要的是在下标中放置几个​​支持的字符 x_max 似乎没有那么不好。 @imaluengo 你可以对x\_1&lt;TAB&gt;说同样的话......它只是更酷;) @becko:我的理解是,它实际上是故意拒绝拥有完整的集合,以免人们开始将其用作标记机制。当然,这引出了一个问题,为什么有任何? 【参考方案1】:

正如我在评论中指出的,并非所有 ASCII 字符都作为 unicode 上标或下标存在。此外,推广此选项卡完成的另一个困难将是确定 \_phi&lt;TAB&gt; 应该是什么意思:是 ₚₕᵢ 还是 ?最后,我要注意的是,由于这些字符是从不同的范围拼凑在一起用于不同的用途,所以它们一起使用时看起来很糟糕。

支持常用词的一个简单技巧是将它们逐个添加到Base.REPLCompletions.latex_symbols 字典中:

Base.REPLCompletions.latex_symbols["\\_max"] = "ₘₐₓ"
Base.REPLCompletions.latex_symbols["\\_min"] = "ₘᵢₙ"

您可以将这些添加到您的.juliarc.jl 文件中,以便在每次启动时加载它们。虽然有可能获得一个全面的解决方案,但这需要更多更多的工作。

【讨论】:

我认为这不是模棱两可的。 ₚₕᵢ\_phi&lt;TAB&gt; 应该是 \_\phi&lt;TAB&gt; 这种定义能否成为脚本的一部分,而不是在.juliarc.jl 文件中并每次运行,以确保代码跨机器的可移植性和跨用户共享?谢谢。 ***.com/a/17909597/565879 好像不是所有字符都可以用作下标。这是 Unicode 限制,而不是 Julia 限制。另见:***.com/questions/6613197/…【参考方案2】:

从 Julia 1.6 开始,这适用于 Julia REPL 中的下标 (\_) 和上标 (\^)。

x\_maxTAB 会像这样打印出来:xₘₐₓ

x\^maxTAB 会像这样打印出来:xᵐᵃˣ

【讨论】:

以上是关于在 Julia 变量名中下标多个字符?的主要内容,如果未能解决你的问题,请参考以下文章

不允许clang中变量名中的Unicode/特殊字符?

通过存储在 Postgresql 中带有特殊字符的变量名中来删除约束

测试一个字符是不是是有效的 Julia 单字符变量名?

基础知识

swift - 在变量名中使用整数for循环

瞿月姣总结的面试题数组下标为什么从0开始数组名中存储的是什么数组的元素如何存储