Skip to content

Instantly share code, notes, and snippets.

@Shinpeim
Last active December 5, 2018 15:44
Show Gist options
  • Select an option

  • Save Shinpeim/7763591 to your computer and use it in GitHub Desktop.

Select an option

Save Shinpeim/7763591 to your computer and use it in GitHub Desktop.
Scalaで組み込みクラスの直和型作るやつ考えてみてる
object Main extends App {
trait IntOrString{
val value:Any // ここつらい
}
implicit class MyInt(self: Int) extends IntOrString{
val value:Int = self
}
implicit class MyString(self:String) extends IntOrString{
val value:String = self
}
// implicit conversion が効くので ListにInt とString を放り込める
val list: List[IntOrString] = List(1, "nyan")
println(list) // => List(Main$MyInt@7c987c42, Main$MyString@7f0610f5)
// という感じでMyInt,MyString型になってしまう(あたりまえ)
println(list.map(_.value))
//こうすればInt, Stringでとれるけどうーん……
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment