scala 函数 语法理解


override def generateJob(time: Time): Option[Job] = {
    parent.getOrCompute(time) match {
      case Some(rdd) =>
        val jobFunc = () => createRDDWithLocalProperties(time, displayInnerRDDOps) {
          foreachFunc(rdd, time)
        }
        Some(new Job(time, jobFunc))
      case None => None
    }
  }

val jobFunc = () => createRDDWithLocalProperties(time, displayInnerRDDOps) {
          foreachFunc(rdd, time)
        }
        
        这个代码是啥意思?createRDDWithLocalProperties 函数执行,为什么后面还会有一个花括号啊??
        
阅读 2.4k
2 个回答

我不知道你的上下文其他代码是怎么样的,但如果你仅仅只是想明白花括号是干嘛用的下面有一个例子:

val a = 1
val b = 2

val func = abstractAdd(a,b){
  addImpl
}

def abstractAdd(a: Int, b: Int)(tryDo: (Int, Int) => Int): Int = {
  tryDo(a, b)
}

def addImpl(a: Int, b: Int): Int = a + b

我们有个不知道这么做加法的运算 abstractAdd,除了要传入要进行加法的 ab,还需要传入一个真正实现加法的函数。func 就实现完整实现了加法运算了。

涉及知识点:柯里化高阶函数

这是一个函数啊.  createRDDWithLocalProperties是函数名
createRDDWithLocalProperties(time, displayInnerRDDOps) {
          foreachFunc(rdd, time)
        }
        
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进