我正在瀏覽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