scala的传值参数和传名参数

来源:互联网 发布:淘宝潮流女装店铺 编辑:程序博客网 时间:2024/06/06 01:38
object ScalaDemo extends App{  var n = 10  def count:Int = {    n -= 1    n  }  def invokeByName(x :  => Int):Unit = {    println("start")    for (i <- 0 until 3){      println("invokeByName x = " + x) //不能使用x()    }    println("end")  }  def invokeByName2(x : () => Int):Unit = {    println("start")    for (i <- 0 until 3){      println("invokeByName2 x = " + x())    }    println("end")  }  def invokeByValue(x : Int):Unit = {    println("start")    for (i <- 0 until 3){      println("invokeByValue x = " + x)    }    println("end")  }  //统一初始化  invokeByName{    println("begin invokeByName")    count  }  invokeByName2{    println("begin invokeByName2")    () => {      n -= 1      n    }  }  invokeByValue{    println("begin invokeByValue")    count  }}


输出 

start
begin invokeByName
invokeByName x = 9
begin invokeByName
invokeByName x = 8
begin invokeByName
invokeByName x = 7
end
begin invokeByName2
start
invokeByName2 x = 6
invokeByName2 x = 5
invokeByName2 x = 4
end
begin invokeByValue
start
invokeByValue x = 3
invokeByValue x = 3
invokeByValue x = 3
end


0 0
原创粉丝点击