scala的函数使用分析

2017-10-29  本文已影响0人  high_m

scala的函数定义及使用知识点挺多,有类型型变(不变、型变、逆变)知识,有 call-by-namecall-by-value使用区别,还有众多特别的语法,下面的示例都将会或多或少的涉及。


Timer方法

Timer方法用于计算一个操作的结果及耗时时间,操作可以看做是一个可执行代码块,返回是一个Tuple,如何定义呢?这就要涉及到call-by-name,因为作为输入参数的操作不应该在传入前就已经执行,否则如何计算执行时间呢?代码如下:

  def timer[A](blockCode: =>A) ={
    val startTime = System.nanoTime()
    val result = blockCode
    val stopTime = System.nanoTime()

    val delta = stopTime - startTime
    (result, delta/1000000d)
  }

timer方法接受一个泛型类型参数A,并且是call-by-name调用,因为A前面有个=>符号,该方式称为"惰性"。如果没有该符号,就是call-by-value调用,返回结果是一个二元组(结果,时间)

上一篇 下一篇

猜你喜欢

热点阅读