美文网首页
Scala传名参数

Scala传名参数

作者: liqing151 | 来源:发表于2018-05-29 20:10 被阅读10次

在Scala中,有传名参数:

def f(para: => Int)={...}

该传名的意思是,该参数已经就位了,可以参数任何运算了。

在参加运算的过程中,如果需要计算该参数,再进行计算,典型的例子是在运算中出现递归。


例如:

def foldRight[A, B](l: List[A], z: => B)(f: (A, => B) => B): B = {
       l match {
          case Nil => z
           case x :: xs => f(x, foldRight(xs, z)(f))
       }
}
def exists(p: Int => Boolean) = {
       foldRight(a, false)((a, b) => p(a) || b)
}

foldRight(xs, z)(f)为实参,在实际调用中并不需要一直循环计算foldRight(xs, z)(f)的值用于展开函数实体p(x) || foldRight(xs, z)(f)的运算,只需要将其看做terminal,直接展开函数实体进行运算即可。

如果p(x)true的话,就不需要计算foldRight(xs, z)(f)的数值,程序可以提前结束,传名参数不再计算该参数对应的数值。

相关文章

网友评论

      本文标题:Scala传名参数

      本文链接:https://www.haomeiwen.com/subject/okaajftx.html