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() }
传递一个代码块给上面定义的函数,所以代码可以看做是个函数的调用