scala 基础 隐式类型

来源:互联网 发布:篆刻印章制作软件 编辑:程序博客网 时间:2024/06/06 02:33

关键字implicit用来标记一个隐式定义。编译器才可以选择它作为隐式变化的候选项。你可以使用implicit来标记任意变量,函数或是对象。

你可以为implicit定义任意的名称。通常情况下你可以任意命名,implicit的名称只在两种情况下有用:一是你想在一个方法中明确指明,另外一个是想把那一个引入到当前作用域。

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)  }}
0 0
原创粉丝点击