gpt4 book ai didi

java - Java语法中表达层次的设计合理性

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:05:33 25 4
gpt4 key购买 nike

我目前正在研究 Java 7 语法,并试图弄清楚为什么要使用几种不同的表达级别。显然,有一些设计决策是为了避免某些无效的结构。但是,在 Java 语法的文档中我无法找到这些决定。

例如,考虑产生式"Expression1Rest: ? Expression : Expression1"。为什么“if-part”是一个 Expression,而 else-part 是一个 Expression1?

这意味着以下 Java 代码不会导致 NetBeans 中出现语法错误:

String value = "";
String x = value.isEmpty() ? x = "empty" : "no";

可以在这里找到官方的 Java 语法: reference link

相关表情制作:

Expression: 
Expression1 [AssignmentOperator Expression1]

Expression1:
Expression2 [Expression1Rest]

Expression1Rest:
? Expression : Expression1

Expression2:
Expression3 [Expression2Rest]

Expression2Rest:
{ InfixOp Expression3 }
instanceof Type

Expression3:
PrefixOp Expression3
( (Expression | Type) ) Expression3
Primary { Selector } { PostfixOp }

是否有一些文档/研究论文解释了 Java 语法背后的决定?

最佳答案

您发布的语法允许赋值运算符的左侧是条件表达式:

shouldSetFoo() ? foo : bar = 47;

因此,如果条件表达式的“else”分支本身可以是赋值表达式,自然会引起歧义。

这个问题不会影响“then”分支,因为 ?: 明确地触发了那个分支,防止了任何歧义。

关于java - Java语法中表达层次的设计合理性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22204353/

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