Java 13引入了 yield
用于switch
表达式的关键字。
如何使用它,与默认值return
或break
值有什么区别?
如何使用?
需要完整块时,带有箭头标签:
int value = switch (greeting) {
case "hi" -> {
System.out.println("I am not just yielding!");
yield 1;
}
case "hello" -> {
System.out.println("Me too.");
yield 2;
}
default -> {
System.out.println("OK");
yield -1;
}
};
使用传统积木:
int value = switch (greeting) {
case "hi":
System.out.println("I am not just yielding!");
yield 1;
case "hello":
System.out.println("Me too.");
yield 2;
default:
System.out.println("OK");
yield -1;
};
默认收益有什么区别?
一条return
语句将控制权返回给 方法
(第8.4节,第§15.12节)或
构造函数
(第8.8节和第15.9节)
的调用者, 而一条yield
语句则通过 使一个封闭的switch
表达式产生一个指定值来转移控制权。
突破值有什么区别?
该break
值为语句赞成的下降yield
声明。
JLS 13附带有JEP
354规范,该规范总结了我们需要了解的有关新产品的所有信息。请注意,它没有被合并到语言规范中,因为它仍然是预览功能,因此不是该语言的永久组成部分。switch
一条
yield
语句通过使一个封闭的switch
表达式产生一个指定值来转移控制权。YieldStatement: yield Expression;
一条
yield
语句试图将控制权转移到最内层的switch表达式;该表达式(称为 yield target
)然后立即正常完成,并且的值Expression
成为switch
表达式的值。
如果
yield
语句没有屈服目标,则是编译时错误。如果
yield
目标包含包围yield语句的任何方法,构造函数,初始化程序或lambda表达式,则是编译时错误。这是一个编译时错误,如果
Expression
一个的yield
声明是无效的(15.1)。执行
yield
语句首先评估Expression
。如果由于Expression
某种原因突然完成了评估,则该yield
语句由于该原因而突然完成。如果对值的评估Expression
正常完成,则产生一个值V
,然后该yield
语句突然完成,原因是带有值的产量V
。
问题内容: 在此MySQL表定义中: 什么是关键字是什么意思?它不是主键,也不是外键,所以它仅仅是索引吗?如果是这样,用这种方法创建的这种索引有何特别之处? 问题答案: 从http://dev.mysql.com/doc/refman/5.1/en/create- table.html 引用 所以是一个;)
问题内容: python中“ yield”关键字有什么作用? 问题答案: 要了解其作用,你必须了解什么是生成器。并且,在你了解生成器之前,你必须了解。 可迭代 创建列表时,可以一一阅读它的项目。逐一读取其项称为迭代: 是一个可迭代的。当你使用列表推导时,你将创建一个列表,因此是可迭代的: 你可以使用的所有“ for… in…”都是可迭代的;lists,strings,文件… 这些可迭代的方法很方便
rank ▲ ✰ vote url 1 2888 2315 4033 url Python中关键字yield有什么作用? yield有什么用? 例如下面这段代码: def node._get_child_candidates(self, distance, min_dist, max_dist): if self._leftchild and distance - max_dist < s
问题内容: 请看以下示例: 我已将的功能标记为。这到底是什么意思?我在子类中完全省略了它,并且编译器完全没有抱怨。那么,它是如何要求的呢? 问题答案: 请参见“自动初始化继承”: 规则1 如果子类没有定义任何指定的初始化器,它将自动继承其所有超类指定的初始化器。 规则2 如果您的子类提供了其所有超类指定初始化器的实现(通过按规则1继承它们,或通过提供自定义实现作为其定义的一部分),则它会自动继承所
问题内容: 我最近偶然发现了以下代码: 我以前从未看过这个关键字。尝试运行我得到的代码 解析错误:语法错误,第x行上出现意外的T_VARIABLE 那么这个关键字是什么呢?它甚至是有效的PHP吗?如果是,该如何使用? 问题答案: 什么啊 该关键字从发电机函数返回数据: 生成器函数的核心是yield关键字。以最简单的形式,yield语句看起来很像return语句,除了yield而不是停止函数的执行并
问题内容: 我看见某个地方 问题答案: Google是您的朋友- 抢手货 -您还可以先看看什么是序列化。 它将成员变量持久化为字节流时标记为不序列化。通过网络传输对象时,需要对该对象进行“序列化”。序列化将对象状态转换为串行字节。这些字节通过网络发送,并且从这些字节中重新创建对象。由java暂态关键字标记的成员变量不会被传输,它们是有意丢失的。 此处的示例,稍作修改(感谢@pgras):