scalaベース暗黙タイプ

1943 ワード

キーワードimplicitは、暗黙的な定義をマークするために使用されます.コンパイラは、暗黙的に変化する候補として選択できます.任意の変数、関数、またはオブジェクトをマークするにはimplicitを使用します.
implicitの任意の名前を定義できます.通常、任意の名前を付けることができます.implicitの名前は2つの場合にのみ役立ちます.1つは、1つの方法で明確に指定したいことです.もう1つは、それを現在の役割ドメインに導入したいことです.
object Implicit {

  def main(args: Array[String]): Unit = {
     import java.util._

     class DateHelper(number: Int){
        def days(when: String): Date={
           var date = Calendar.getInstance()
           when match{
             case "ago" => date.add(Calendar.DAY_OF_MONTH,-number)
             case "from_now" => date.add(Calendar.DAY_OF_MONTH,number)
             case _ => date
           }
           date.getTime()
        }
     }
     //             (    import          )
     //scala       , int   DateHelper      days  
     implicit def convertInt2DateHelper(number: Int) = new DateHelper(number) 

     val past = 2 days "ago"
     println(past)
     val appointment = 5 days "from_now"
     println(appointment)
  }

}