用于简化Swift中枚举关联值的运算符或函数
我不知道是否有一种方法可以将枚举大小写转换为它的一个关联值,或者以任何可以应用于枚举的通用方式返回nil。看起来至少在理论上是可能的 我想做的用于简化Swift中枚举关联值的运算符或函数,swift,generics,enums,operators,Swift,Generics,Enums,Operators,我不知道是否有一种方法可以将枚举大小写转换为它的一个关联值,或者以任何可以应用于枚举的通用方式返回nil。看起来至少在理论上是可能的 我想做的 let value: TestClass1? = model .> TestEnum.one // do something 我现在正在做的 if case .one(value: let value) = self.model { // do something } guard case .one(value: let value)
let value: TestClass1? = model .> TestEnum.one
// do something
我现在正在做的
if case .one(value: let value) = self.model {
// do something
}
guard case .one(value: let value) = self.model else {
//handle case where self.model != .one
return
}
//do something
不编译:
infix operator .>
func .><T,U>( _expression: T, _case: (U) -> T) -> U? {
guard case _case(let u) = _expression else { return nil }
return u
}
如果有人对如何使上述操作员功能工作有任何想法,我希望得到任何建议。这在swift中无法实现。为什么?我希望这篇文章将指导你:可能的副本
class TestClass1 {}
class TestClass2 {}
enum TestEnum {
case one(value: TestClass1)
case two(value: TestClass2)
}
struct TestStruct {
let model: TestEnum = .one(value: TestClass1())
func function() -> TestClass1? {
// what I want to do
return model .> TestEnum.one
}
}