- 通常のメソッドの括弧ではなく、中括弧が使用されるのはなぜですか?
パラメータが無名関数の場合、中括弧を使用することを好む人もいます。一つには、中括弧は無名関数とのパターンマッチングを可能にしますが、括弧はそうではありません。この特定の例では、中括弧は必要ありません。
中括弧が必要な例を次に示します(caseパターンマッチングのため)。
def dotProd(v1:Row, v2:Row) =
v1.zip(v2).map{ case (a, b) => a * b }.reduceLeft(_ + _)
上記の関数は、少し異なる方法で、質問の関数と同じことを実行することに注意してください。
いいえ、パラメータです。と同様v1に、はのv2パラメータであり、に渡される無名関数のパラメータです。dotProdtmap
のメソッドt。パラメーターtはタプル(具体的にはTuple2[Double, Double]、と書くことができます)として定義されており、タプルを使用すると、、、、(Double, Double)などのメソッドを使用してタプルの各メンバーを抽出できます。_1_2_3
もちろん、とTuple2だけが_1あります。他の関数型言語の影響により_2、最初のパラメーターは_1ではなく、であることに注意してください。_0
とにかく、zipメソッドはRow(List[Double])をに変換しList[(Double, Double)]ます。このメソッドmapは、リストの要素(タプル)を別の要素に変換する関数を取り(Double, Double)ます。