我正在尝试将选项扩展为可读的内容,并且到目前为止实现了这一点:
@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)
}
我一直在集思广益,希望能得到一些帮助。
谢谢!