在 Kotlin 中,您可以从闭包的外部函数返回。
fun main(args: Array<String>) {
val letters = listOf("A", "B", "C")
fun lookForLetter(letter: String, letters: List<String>){
letters.forEach { l ->
if (l == letter) {
println("Found")
return
}
println(l)
}
println("Completed")
}
lookForLetter("A", letters = letters)
}
输出:
找到
在 Swift 中,return 退出闭包的执行
var letters = ["A", "B", "C"]
func lookForLetter(letter: String, letters: [String]) {
letters.forEach { (l) in
if l == letter {
print("Found");
return
}
print(l)
}
print("Completed")
}
lookForLetter(letter: "A", letters: letters)
输出:
找到
B
C
完成
有没有办法在 Swift 中实现相同的结果?
最佳答案
Swift 没有来自闭包的非本地返回。换句话说,没有直接的方法可以从多个级别返回。这仅适用于 Kotlin 中的内联函数,但 Swift 没有这种区别。
还有其他收集方法会在找到元素后停止,例如 index(where:)
。
func lookForLetter(letter: String, letters: [String]) {
guard let _ = letters.index(where: { (l) in
if l == letter {
print("Found");
return true
}
print(l)
return false
}) else {
print("Completed")
return
}
}
关于Swift - 从闭包中退出外部函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47586553/