scala的传值参数和传名参数

xiaoxiao2021-02-28  105

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

转载请注明原文地址: https://www.6miu.com/read-50859.html

最新回复(0)