Scala语法一直让我疯狂。下面是Spark驱动程序中的一行Scala。除了最后,我得到了大部分内容。
val ratings = lines.map(x => x.toString().split("\t")(2))
(2)只是漂浮在那里没有意义。我从理智上理解它是RDD中的第三个项目,但为什么没有一个点或某些东西将它连接到声明的其余部分?
答案 0 :(得分: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 :(得分:1)
因为字符串x被拆分成一个数组,这是访问数组元素的语法
答案 2 :(得分: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)