有人可以向我解释这一行的Scala代码吗?

问题描述:

Scala语法一直让我疯狂。下面是Spark驱动程序中的一行Scala。除了最后,我获得了大部分。 (2)只是漂浮在那里没有任何意义。我理智地理解这是RDD中的第三项,但为什么没有一个点或其他东西将它连接到声明的其余部分?有人可以向我解释这一行的Scala代码吗?

+0

括号是Scala的函数调用语法。实际上与大多数其他语言没有什么不同。例如。 ECMAScript和Python是一样的。 –

+0

我一直在用各种语言编写15年的代码。我不知道.split()是一个数组,它可以帮助但更重要的是,没有其他语言我曾经用Scala的方式将它们连在一起。有时候我在SSIS的C#中看到了这一点,但我只是认为这是C#而非C#的怪癖。 –

这是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" 

由于串x被分成数组,这是访问数组元素

在我的观察

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)