2017-06-02 8 views
-1

Scalaの構文は私をナットにしています。以下はSparkドライバプログラムのScalaの行です。私は最後を除いてほとんどを得る。誰かが私にこの行のScalaコードを説明できますか?

val ratings = lines.map(x => x.toString().split("\t")(2)) 

ちょうど浮いている(2)は意味がありません。私はそれがRDDの3番目の項目であることを知的に理解していますが、なぜ点やそれ以外の部分に接続するものがないのでしょうか?

+0

括弧は、関数呼び出しのためのScalaの構文です。他の言語とほとんど変わりません。例えば。 ECMAScriptとPythonは同じ方法です。 –

+0

私は15年間さまざまな言語でコードを書いてきました。 .split()は助けになる配列だったが、もっと重要なのは、私がScalaのやり方でチェーンのものを一緒に使ってきた他の言語はなかったことだ。ときどき私はSSISの内部のC#でこれを見ていますが、私はそれがC#ではなくツールのクールークであると考えていました。 –

答えて

5

にアクセスするための構文ですので。

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" 
1

文字列xは、配列に分割し、これはそれがArray要素にアクセスするためのScalaのシンタックスだ配列要素

0

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) 
関連する問題