class縛り
protocol Fuga: class {} // struct Aho: Fuga {} => Error class Aho: Fuga {}
という感じで class で縛れる。struct では縛れない。 ...
Read Morepackage object tagged { type Tagged[A, T] = {type Tag = T; type Self = A} type @@[T, Tag] = Tagged[T, Tag] } case class Hoge(id: String @@ Hoge) case class Foo(id: String @@ Foo) scala> val hogeStr: String @@ Hoge] = "123".asInstanceOf[String @@ Hoge] scala> val fooStr: String @@ Foo] = "123".asInstanceOf[String @@ Foo] scala> val hoge1 = Hoge(hogeStr) //=> OK scala> val hoge2 = Hoge(fooStr) //=> NG scala> hogeStr + "456" //=> "123456"
これを Swift で書こうとして無理だと悟って休日が終わりました。はぁ...。 はやく...
Read Moreウェブ界隈でエンジニアとして労働活動に励んでいる @gomi_ningen 個人のブログです。