scala笔记-隐式变量

知识点:隐式变量

注意点:

  • 不声明,不能直接用
  • 一个方法,不能同时找到多个隐式变量,否则会报错
  • 如果显示指定了值,则隐式的值不会起到作用

测试代码:

package demo.scala

object TestImplicit1 {

  def test(implicit name: String) = {
    println("name=" + name)
  }

  def main(args: Array[String]): Unit = {
    //1.直接调用,没走隐式参数,结果:name=abc
    test("abc")

    //2.报错:could not find implicit value for parameter name: String
    //test

    //3.隐式参数,找到了直接用,所以test不会报错,结果:name=implicit_name
    implicit val abc = "implicit_name"
    test

    //4.显示指定时候,不会用隐式参数的值,结果:name=abc
    test("abc")

    //5.再定义一个字符串类型的隐式变量,会报错,因为方法test找到了两个字符串类型的隐式变量:ambiguous implicit values: both value s1 of type String and value abc of type String match expected type String test
    //    implicit val s1 = "s1"
  }
}

猜你喜欢

转载自coderlxl201209164551.iteye.com/blog/2412798