【发布时间】:2020-07-08 10:54:22
【问题描述】:
我正在尝试将可选项扩展为可读的内容,并且目前已实现:
@discardableResult
func isNotNil(_ handler: (Wrapped) -> Void) -> Optional {
switch self {
case .some(let value):
handler(value)
return self
case .none:
return self
}
}
@discardableResult
func isNil(_ handler: () -> Void) -> Optional {
switch self {
case .some:
return self
case .none:
handler()
return self
}
}
这样我就可以在可选的函数上调用我的函数,例如:
viewModel?.title.isNotNil { _ in
//do something
}.isNil {
//handle error
}
问题是,我想重用这些函数来返回特定类型,但我无法实现或遗漏了一些东西。例如:
let vm: MyViewModel = dataSource?.heading.isNotNil {
return MyViewModel(title: $0.title, subtitle: $0.subtitle)
}
我一直在集思广益,希望能得到一些帮助。
谢谢!
【问题讨论】:
-
你在重新发明
Optional.map吗?例如。let vm = dataSource?.heading.map { MyViewModel(...) }
标签: swift swift-optionals