使用Java的Stream API,可以使用 功能 internal iteration而非,就像
一样collection.forEach(out::println)
Swift是否遵循for-each循环结构......
for i in names {
println(i)
}
...仅仅是内部(功能)迭代的语法糖,也可以被解释为循环的以下命令?
for var i = 0; i < names.count; i++ {
println(names[i])
}
答案 0 :(得分:6)
language reference表示对于for
- in
循环,
在集合表达式上调用
generate()
方法以获取生成器类型的值 - 即符合Generator
协议的类型。程序通过调用流上的next()
方法开始执行循环。如果返回的值不是None
,则将其分配给项模式,程序执行语句,然后在循环开始时继续执行。否则,程序不执行赋值或执行语句,并且已完成执行for
-in
语句。
所以,我们可以说
for i in names {
println(i)
}
大致相当于
var g = names.generate() // "var" because next() is a mutating function
while let i = g.next() { // "let" pattern because next() returns an optional
println(i)
}
至于功能迭代,我们有SequenceType的func map<T>(_ transform: (Element) -> T) -> [T]
。