我一生都在做C/Java/C3/Python/JS
。从昨天开始,我正在查看一些scala代码,现在我对所有事情感到非常困惑。
该片段:
// Parse the input file
val lines = fromTextFile(input)
// Iterate on every element to generate the keys, and then aggregate it
val counts = lines.mapFlatten{
line =>
val rowSplit = line.split(",",-1)
.... }
方法mapFlatten in scoobi api的签名是:
def mapFlatten[B](f: (A) ⇒ Iterable[B])(implicit arg0: WireFormat[B]): DList[B]
为什么我们使用
致电mapFlatten
mapFlatten{
而不是
mapFlatten({
是因为该函数将谓词作为参数吗?
在这个意义上,是,否则,如果也起作用?
答案 0 :(得分:1)
根据这个答案
Why use curly braces over parentheses?
有些情况下,您需要使用卷曲括号(多行表达式)和不需要的情况。
实际上,它们都是接收内部功能的功能。
在这种情况下:
def mapFlatten[B](f: (A) ⇒ Iterable[B])(implicit arg0: WireFormat[B]): DList[B]
你传递一个函数f:(A)应该导致Iterable [B]
答案 1 :(得分:1)
来自 Scala编程,拳头版,第7版(是的,有点过时):
在Scala中的任何方法调用中,您只需要传入一个参数,就可以选择使用花括号括起参数而不是括号。
然后是:
此功能的目的是使客户端程序员能够在花括号之间编写函数文字。这可以使方法调用更像是一种控件抽象。