在 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)
}
Output:
Found
在 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)
Output:
Found
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
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)