scala中的表达式

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()
  }

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

原文地址:https://www.cnblogs.com/gaoxing/p/4694839.html