scala中的表达式是有值的, 所以可以把表达式当做参数来传递, 那么接受表达式的形参定义一般是: block: =>Unit   , 没有形参,返回类型Unit

spark中的这个代码很经典,可以传递一个代码块给函数:

  def tryOrIOException(block: =>Unit){
try{
block
} catch {
case e:IOException => throw e
case NonFatal(t) => throw new IOException(t) }
}

这个函数使用如下:

  private def readObject(in: java.io.ObjectInputStream): Unit = Utils.tryOrIOException {
in.defaultReadObject()
init()
}

传递一个代码块给上面定义的函数,所以代码可以看做是个函数的调用

05-19 06:49
查看更多