是否可以访问属性的getter,以便可以将其传递给filter
/ map
/ reduce
之类的函数?
例如,假设我有一个User
实体:
struct User {
let firstName: String
let lastName: String
let isUnderaged: Bool
func fullName() -> String {
return "\(firstName) \(lastName)"
}
}
let users: [User] = [] // or some computed result
如果我需要过滤所有未满年龄的用户,则需要创建一个临时的匿名闭包,该闭包仅返回isUnderaged
值:
let underagedUsers = users.filter { $0.isUnderaged }
相似,如果我想收集所有给定名称:
let givenNames = users.map { $0.firstName }
,我必须创建另一个匿名闭包。
另一方面,可以很好地传递fullName()
方法:
let allNames = users.map(User.fullName)
#selector
接受#selector(getter: User.isUnderaged)
形式(User
必须是一个类,它才能正常工作,仅以它为例)。
Swift是否支持这样的功能-将getter传递给允许闭包的函数?
正在搜索与此users.filter(User.isUnderaged)
类似的内容-由于isUnderaged
当前没有实例,因此无法编译。