代码之家  ›  专栏  ›  技术社区  ›  addzo

Swift函数与数组和守卫…可能吗?

  •  0
  • addzo  · 技术社区  · 5 年前

    试图使这种常见的swift模式更具功能性。

    for object in objects.allObjects {
        guard let _object = object as? SomeTypeOfObject else { continue }
        _object.subObject(subObject, objectStateChanged: changedState)
    }
    
    1. 我很想使用“any”(而不是map)来摆脱for循环——就像Kotlin一样——但这在Swift中似乎是不可能的。

    2. 试图找出一种方法,将守卫包含在这个块的函数表示中。

    感觉好像我错过了什么。是吗?

    谢谢

    0 回复  |  直到 5 年前
        1
  •  0
  •   Rob Md Fahim Faez Abir    5 年前

    一个常见的功能模式是 compactMap 然后在a中调用带有副作用的方法 forEach 这消除了 guard 完全:

    objects.allObjects                           // Add `.lazy` if you don’t want to build the intermediary array
        .compactMap { $0 as? SomeTypeOfObject }
        .forEach { $0.subObject(subObject, objectStateChanged: changedState) }
    
    推荐文章