试图使这种常见的swift模式更具功能性。
for object in objects.allObjects { guard let _object = object as? SomeTypeOfObject else { continue } _object.subObject(subObject, objectStateChanged: changedState) }
我很想使用“any”(而不是map)来摆脱for循环——就像Kotlin一样——但这在Swift中似乎是不可能的。
试图找出一种方法,将守卫包含在这个块的函数表示中。
感觉好像我错过了什么。是吗?
谢谢
一个常见的功能模式是 compactMap 然后在a中调用带有副作用的方法 forEach 这消除了 guard 完全:
compactMap
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) }