Aar*_* Fi 6 loops programming-languages for-loop
伪代码:
for each x in someArray {
// possibly add an element to someArray
}
Run Code Online (Sandbox Code Playgroud)
我忘记了某些语言中引发的异常的名称.
我很想知道为什么有些语言禁止这种用例,而其他语言允许这样做.允许的语言是否不安全 - 容易陷入困境?或者禁止语言只是过于谨慎,或者可能是懒惰(他们本可以实现语言来优雅地处理这种情况,但根本没有打扰).
谢谢!
你想要的行为是什么?
list = [1,2,3,4]
foreach x in list:
print x
if x == 2: list.remove(1)
Run Code Online (Sandbox Code Playgroud)
可能的行为:
list是一些链表类型迭代器,删除不会影响当前迭代器:
[1,2,3,4]
Run Code Online (Sandbox Code Playgroud)
list是一些数组,你的迭代器通过指针增量迭代:
[1,2,4]
Run Code Online (Sandbox Code Playgroud)
与以前一样,只有系统尝试缓存迭代计数
[1,2,4,<segfault>]
Run Code Online (Sandbox Code Playgroud)
问题是实现这个允许foreach-looping的可枚举/序列接口的不同集合具有不同的行为.