scala的函数使用分析

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调用,返回结果是一个二元组(结果,时间)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容