subscript(dynamicMember:)
Extracts the associated value of a case via dynamic member lookup.
subscript<Value>(dynamicMember keyPath: KeyPath<Self.AllCasePaths, AnyCasePath<Self, Value>>) -> Value? { get set }
Simply annotate the base type with @dynamicMemberLookup
to enable this functionality:
@CasePathable
@dynamicMemberLookup
enum UserAction {
case home(HomeAction)
case settings(SettingsAction)
}
let userAction: UserAction = .home(.onAppear)
userAction.home // Optional(HomeAction.onAppear)
userAction.settings // nil
let userActions: [UserAction] = [.home(.onAppear), .settings(.subscribeButtonTapped)]
userActions.compactMap(\.home) // [HomeAction.onAppear]
userActions.compactMap(\.settings) // [SettingsAction.subscribeButtonTapped]