53ningen.com

@gomi_ningen's Website

タグ付けできない休日

package 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

Copyright © 53ningen.com