2017-06-02 128 views
-1

Scala語法一直讓我瘋狂。下面是Spark驅動程序中的一行Scala。除了最後,我獲得了大部分。 (2)只是漂浮在那裏沒有任何意義。我理智地理解這是RDD中的第三項,但爲什麼沒有一個點或其他東西將它連接到聲明的其餘部分?有人可以向我解釋這一行的Scala代碼嗎?

+0

括號是Scala的函數調用語法。實際上與大多數其他語言沒有什麼不同。例如。 ECMAScript和Python是一樣的。 –

+0

我一直在用各種語言編寫15年的代碼。我不知道.split()是一個數組,它可以幫助但更重要的是,沒有其他語言我曾經用Scala的方式將它們連在一起。有時候我在SSIS的C#中看到了這一點,但我只是認爲這是C#而非C#的怪癖。 –

回答

5

這是Scala的用於訪問Array元素語法的語法。

x.toString().split("\t") 

以上回報爲Array。添加(2)將返回該數組中的第三個元素。這是用於在數組上調用.apply(2)的語法糖,它爲您提供索引處的元素。

一個例子:

val numbers = Array("beaver", "aardvark", "warthog") 
numbers(0) // "beaver"; same as numbers.apply(0) 
numbers(1) // "aardvark" 
numbers(2) // "warthog" 
1

由於串x被分成數組,這是訪問數組元素

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) 
相關問題