scalaの暗黙的

1031 ワード

scalaの暗黙的な操作をより簡潔にすることができ、文末の参考にリストされたimplicitの関連ブログは暗黙的な役割と使用方法をよく表現しており、ここでは主にいくつかのケースを分析している.
1浅いMap
final class MyTuple2[A](private val self: A) {
     def & [B](y: B): (A, B) = Tuple2(self, y)
     def map [B](y: B): (A, B) = Tuple2(self, y)
}

object myTrait {
  implicit def any2MyTuple2[A](x: A): MyTuple2[A] = new MyTuple2(x)
}

object MapUseDriver extends App {
  import myTrait._
  val a = Map(1 & "A",2  & "B")
  println(a)

  val c = Map(1.&("A"),2.&("B"))
  println(c)

  val b = Map(1 map "A", 2 map "C")
  println(b)

  val myMap = new MyTuple2[Int](1)
  println(myMap.map(2))
}

文中1 & Aはなぜ有効なのですか?
暗黙的方法any2MyTuple2の作用により、この作用ドメインの下の任意のタイプのオブジェクトがMyTuple2タイプに変換される能力、すなわちMyTuple2の方法を有することができる.
さらに、Predef.scalaArrowAssocクラスおよび暗黙的方法any2ArrowAssocを検索することができる.
リファレンス
  • scala implicit暗黙変換