Scalaの構文は私をナットにしています。以下はSparkドライバプログラムのScalaの行です。私は最後を除いてほとんどを得る。誰かが私にこの行のScalaコードを説明できますか?
val ratings = lines.map(x => x.toString().split("\t")(2))
ちょうど浮いている(2)は意味がありません。私はそれがRDDの3番目の項目であることを知的に理解していますが、なぜ点やそれ以外の部分に接続するものがないのでしょうか?
Scalaの構文は私をナットにしています。以下はSparkドライバプログラムのScalaの行です。私は最後を除いてほとんどを得る。誰かが私にこの行のScalaコードを説明できますか?
val ratings = lines.map(x => x.toString().split("\t")(2))
ちょうど浮いている(2)は意味がありません。私はそれがRDDの3番目の項目であることを知的に理解していますが、なぜ点やそれ以外の部分に接続するものがないのでしょうか?
にアクセスするための構文ですので。
x.toString().split("\t")
上記は、Array
を返します。 (2)
を追加すると、その配列の3番目の要素が返されます。これは配列の.apply(2)
を呼び出すための構文的な砂糖です。これは、指定されたインデックスの要素を提供します。
例:私の観察で
val numbers = Array("beaver", "aardvark", "warthog")
numbers(0) // "beaver"; same as numbers.apply(0)
numbers(1) // "aardvark"
numbers(2) // "warthog"
文字列xは、配列に分割し、これはそれがArray
要素にアクセスするためのScalaのシンタックスだ配列要素
val fruits = Array("Apple", "Banana", "Orange");
fruits.map(x => x.toString().split("\t")(0))
Array[String] = Array(Apple, Banana, Orange)
fruits.map(x => x.toString().split("\t"))
Array[Array[String]] = Array(Array(Apple), Array(Banana), Array(Orange))
fruits.map(x => x.toString())
Array[String] = Array(Apple, Banana, Orange)
括弧は、関数呼び出しのためのScalaの構文です。他の言語とほとんど変わりません。例えば。 ECMAScriptとPythonは同じ方法です。 –
私は15年間さまざまな言語でコードを書いてきました。 .split()は助けになる配列だったが、もっと重要なのは、私がScalaのやり方でチェーンのものを一緒に使ってきた他の言語はなかったことだ。ときどき私はSSISの内部のC#でこれを見ていますが、私はそれがC#ではなくツールのクールークであると考えていました。 –