我正在浏览spark的测试代码。虽然我理解下面给出的函数背后的逻辑双参数化函数在scala中意味着什么?
这是什么意思?在下面的语法中定义的好处是什么?
测试代码
def withStreamingContext[R](ssc: StreamingContext)(block: StreamingContext => R): R = {
try {
block(ssc)
} finally {
try {
ssc.stop(stopSparkContext = true)
} catch {
case e: Exception =>
logError("Error stopping StreamingContext", e)
}
}
}
为什么它必须这样定义?为什么不能像
def withStreamingContext[R](ssc: StreamingContext,block: StreamingContext => R): R =
我试过了在sbt控制台中的addTwo。但是我收到错误缺少方法总和的参数; 如果你想把它作为一个部分应用的函数,用'_' 按照这个方法 def addTwo = sum(2) 你错过了_最后。 def addTwo = sum(2) – Knight71
啊是的。但是,如果它在Int => Int的环境中使用,那么将推断它并且不需要下划线,例如, 'List(1,2,3).map(sum(3))'。 – slouc