有人可以向我解释这一行的Scala代码吗?
问题描述:
Scala语法一直让我疯狂。下面是Spark驱动程序中的一行Scala。除了最后,我获得了大部分。 (2)只是漂浮在那里没有任何意义。我理智地理解这是RDD中的第三项,但为什么没有一个点或其他东西将它连接到声明的其余部分?有人可以向我解释这一行的Scala代码吗?
答
这是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)
括号是Scala的函数调用语法。实际上与大多数其他语言没有什么不同。例如。 ECMAScript和Python是一样的。 –
我一直在用各种语言编写15年的代码。我不知道.split()是一个数组,它可以帮助但更重要的是,没有其他语言我曾经用Scala的方式将它们连在一起。有时候我在SSIS的C#中看到了这一点,但我只是认为这是C#而非C#的怪癖。 –