【发布时间】:2014-09-01 20:10:47
【问题描述】:
Python 有一个有趣的 for 语句,可让您指定 else 子句。
在这样的结构中:
for i in foo:
if bar(i):
break
else:
baz()
else 子句在for 之后执行,但前提是for 正常终止(不是break)。
我想知道 C++ 中是否有等价物?我可以使用for ... else吗?
【问题讨论】:
-
这是一个不时出现的有趣想法。出于好奇,这种结构在实际代码中的使用频率如何?
-
@KerrekSB 这是真正的问题。当我开始学习 Python 时,我发现这对初学者来说是微不足道的和困惑的。我找不到这个结构的任何紧迫要求。
-
@m.wasowski:真的吗?通常标准的提前返回对于类似查找的算法来说效果很好,不需要单独的“循环完成”块。
-
我确实喜欢这种结构,并且我进行了搜索以查看是否可以在我的代码中找到它的一些用例来回答 @KerrekSB ,但我需要将其发布为答案,因为 cmets 是不够
-
@agomcas:从那以后我确信这种结构很有用。推理是这样的:
if (c)、while (c)和for (...; c; ...)中的所有三个都评估c,但目前只有第一个允许您访问此表达式的结果。另外两个正在丢弃这些信息,这违反了不应丢弃作为计算的一部分获得的结果的原则。
标签: python c++ loops for-loop break