Avatar
omochimetaru 6/5/2019 9:29 AM
StaticMember.red はおかしくない?
9:29 AM
StaticMember<Base>.redBase を何かで埋めないと。
9:30 AM
あ、見てる場所が違うのか。 俺が気にしてるのは .colorStyle(.red) の推論ね。
9:30 AM
{ return .init(.init()) } の方じゃない。
9:31 AM
@swift-5.1.5 struct StaticMember<Base> { init(_ base: Base) {} } protocol ColorStyle { typealias Member = StaticMember<Self> } struct RedStyle : ColorStyle {} struct BlueStyle : ColorStyle {} extension StaticMember where Base : ColorStyle { static var red: RedStyle.Member { return .init(.init()) } static var blue: BlueStyle.Member { return .init(.init()) } } protocol View {} extension View { func colorStyle<S : ColorStyle>(_ style: S.Member) { } } struct MyView : View {} MyView().colorStyle(.red) MyView().colorStyle(.blue)