Skip to content

mapping on SharedReader #3137

Answered by mbrandonw
OguzYuuksel asked this question in Q&A
Discussion options

You must be logged in to vote

Hi @OguzYuuksel, this can be solved with dynamic member look up. You want to transform a Wrapper<Wrapper2<…>> into a Wrapper<…>, which you can do via a subscript on Wrapper:

enum Wrapper<S> {
  case value(S)
  case none
}

enum Wrapper2<S> {
  case value(S)
  case none
}

extension Wrapper {
  subscript<Value>() -> Wrapper<Value> where S == Wrapper2<Value> {
    get {
      switch self {
      case .value(.value(let value)):
        .value(value)
      case .value(.none), .none:
        .none
      }
    }
    set {
      switch newValue {
      case .value(let value):
        self = .value(.value(value))
      case .none:
        self = .none
      }
    }
  }
}
import SwiftUI
func foo() {

Replies: 1 comment 1 reply

Comment options

You must be logged in to vote
1 reply
@OguzYuuksel
Comment options

Answer selected by OguzYuuksel
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Category
Q&A
Labels
None yet
2 participants