Swift - 从闭包中退出外部函数

标签 swift kotlin

在 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/

相关文章:

ios - 如何使用 coreData ,swift 将项目添加到各自的父类别

kotlin - 返回菊花链伴随对象的实例

android - 无法在 Kotlin 中构建发布版本

iOS:Swift 常量文件

ios - 在循环执行期间更改 UIImageView UIImage

kotlin - 如何在 Kotlin 中使用公共(public)访问器定义 protected 字段

kotlin - 为什么我看不到扩展类的伴随对象组件?

jpa - 将Kotlin不可变实体与JPA一起使用时发生意外更改

ios - RPPreviewViewController 在播放后禁用音频

ios - 为什么无法进行物体内碰撞检测?