Avatar
omochimetaru 5/15/2020 1:13 AM
StaticMemberか。
1:14 AM
あれがまさに、protocolを受け取るところで .red とかやるためのものだった気がする、違うっけ
1:14 AM
Swift's dot shorthand for static factories is wonderful! Unfortunately, it currently requires a concrete type context in order to work. A while ago I pitched an idea for lifting this limitation. It turned out that the original idea in that pitch isn't viable, but the thread ...
1:14 AM
protocol ColorStyle { typealias Member = StaticMember<Self> } extension StaticMember where Base : ColorStyle { static var red: RedStyle.Member { return .init(.init()) } static var blue: BlueStyle.Member { return .init(.init()) } } extension View { func colorStyle<S : ColorStyle>(_ style: S.Member) -> some View { ... } } MyView().colorStyle(.red) MyView().colorStyle(.blue)
1:16 AM
これの問題点は、消費側で <S: ColorStyle> に対して、 (_ s: S)(_ s: S.Member) の両方をオーバーロードしておかないといけないことだけど