gpt4 book ai didi

java - 为什么 µ 在 Java 中似乎是有效的变量名,但在 Groovy 中却不是?

转载 作者:行者123 更新时间:2023-12-01 19:59:46 25 4
gpt4 key购买 nike

如果我在 Groovy 代码中尝试 µ = new Object() 我会看到以下内容:

ideaGroovyConsole.groovy: 1: unexpected char: 0xB5 @ line 1, column 1.
µ = new Object()

Object µ = new Object(); 在 Java 中就可以了。

π 在这两个地方都是完全有效的变量名称。为什么会出现这种差异?

最佳答案

[OP:这个答案基本上是正确的。有关更多详细信息,请参阅末尾的注释。]

字符 μ 有效,但字符 µ 无效。

查看代码 https://github.com/jeffbrown/micro/blob/76a81f9c511f6eb1d1f30230e8e5ace878f2e6ee/src/main/groovy/micro/MicroDemo.groovy#L6-L8 .

package micro

class MicroDemo {
static void main(args) {

String μ = 'Jeff Scott Brown'

println "The Name Is ${μ}"
}
}

如果您克隆该存储库并运行 ./gradlew run 您将看到以下输出:

The Name Is Jeff Scott Brown
<小时/>

OP 添加的注释:

我看到的基本问题是 Mac 键盘正在输入 µ(恰好是 U+B5,“微”符号),Groovy 正确地拒绝它作为变量名(因为它不是字母字符) ),而 Java 编译器确实接受它作为变量名(尽管可以说它不应该)。

Java 和 Groovy 都正确接受 μ(U+3BC,希腊字母 mu),尽管这(特别)被我的 IDE (IntelliJ) 遮盖了,它:

  • 不会提示 Groovy 代码中的“micro”
  • 不会接受 Java 或 Groovy 源代码中的 \u00b5\u03bc 等 unicode 转义

尽管如果您忽略 IDE 并无论如何构建/运行,它们都会按照描述执行(或失败)。

关于java - 为什么 µ 在 Java 中似乎是有效的变量名,但在 Groovy 中却不是?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48445704/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com