call by name 与 call by value in scala
2014-11-12 12:29
387 查看
</pre><pre name="code" class="plain">class NameTest{ def time():Long = { println("In time()") System.nanoTime() } def exec(t:Long):Long={ println("Enter exec,calling t ...") println("t:" + t) println("Calling t again ...") t } def exec2(t: => Long):Long={ println("Enter exec,calling t ...") println("t:" + t) println("Calling t again ...") t } } object NameTest{ def main (args: Array[String]) { val ab = new NameTest // call by value -> exec(t:Long) // 先执行 time(),所以 (1)In time() (2) Enter exec,calling t ... (3)"t: ..." (4) Calling t again ... (5) t: // (3)'time equals to (5)'time println(ab.exec(ab.time())) // call by name -> exec2(t: => Long) //延后执行参数方法,先执行本方法 // 先执行 exec2(),到真正调用 time() 再执行 // 所以 (1)Enter exec,calling t ... (2)In time() (3)"t: ..." (4) Calling t again ... (5) t: // (3)'time differ from (5)'time println(ab.exec2(ab.time())) } }
exec() 的执行结果
In time()Enter exec,calling t ...t:1723672175961427Calling t again ...1723672175961427
<pre name="code" class="plain">exec2() 的执行结果
Enter exec,calling t ...In time()t:1723706117217764Calling t again ...In time()1723706117317442
相关文章推荐
- scala中的call-by-name和call-by-value
- Scala从零开始:函数参数的传名调用(call-by-name)和传值调用(call-by-value)
- scala 中的def/val/lazy val/的区别,call-by-value/call-by-name
- scala def/val/lazy val区别以及call-by-name和call-by-value
- Scala中的call-by-name与call-by-value
- scala函数的call-by-name和call-by-value 区别
- scala中的call-by-name和call-by-value
- scala:函数参数的传名调用(call-by-name)和传值调用(call-by-value)
- scala中call-by-name和call-by-value
- scala中的call-by-name和call-by-value
- Call by Name, Call by Value
- CallByValue和CallByName区别
- 出现 Assigning the return value of new by reference is deprecated in xxxx &&“Warning: Call-time pass-by-reference has been deprecated”怎么办?
- call by value ;call by address/reference ;call by name;call by pointer
- scala 传名调用call-by-name
- Scala 学习笔记(一)------函数传名调用(call-by-name)
- Scala 函数传名调用(call-by-name)
- A simple Scala call-by-name example
- 使用CallByName“代替”模式窗口。
- php5.3 中显示Deprecated: Assigning the return value of new by reference is deprecated in 的解决方法