- 通常のメソッドの括弧ではなく、中括弧が使用されるのはなぜですか?
パラメータが無名関数の場合、中括弧を使用することを好む人もいます。一つには、中括弧は無名関数とのパターンマッチングを可能にしますが、括弧はそうではありません。この特定の例では、中括弧は必要ありません。
中括弧が必要な例を次に示します(case
パターンマッチングのため)。
def dotProd(v1:Row, v2:Row) =
v1.zip(v2).map{ case (a, b) => a * b }.reduceLeft(_ + _)
上記の関数は、少し異なる方法で、質問の関数と同じことを実行することに注意してください。
いいえ、パラメータです。と同様v1
に、はのv2
パラメータであり、に渡される無名関数のパラメータです。dotProd
t
map
のメソッド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)
ます。