为什么括号?
以下是书programming in scala的引用。
这个例子说明的另一个重要想法将让你了解为什么数组在Scala中用括号访问。 Scala比Java更少特殊情况。数组只是Scala中其他任何类的实例。当您将一个或多个值的括号应用于变量时,Scala会将代码转换为对该变量名为apply的方法的调用。所以greetStrings(i)变成了greetStrings.apply(i)。因此,在Scala中访问数组的一个元素就像其他任何方法一样。这个原则并不局限于数组:任何一个对象对圆括号中的某些参数的任何应用都会被转换为一个apply方法调用。当然,只有当这种类型的对象实际上定义了一个apply方法时,它才会被编译。所以这不是特例;这是一条通用规则。
下面是一些使用函数式编程风格来拉动某个元素(在这种情况下是第一个元素)的例子。
// Create a multdimension Array
scala> val a = Array.ofDim[String](2, 3)
a: Array[Array[String]] = Array(Array(null, null, null), Array(null, null, null))
scala> a(0) = Array("1","2","3")
scala> a(1) = Array("4", "5", "6")
scala> a
Array[Array[String]] = Array(Array(1, 2, 3), Array(4, 5, 6))
// 1. paratheses
scala> a.map(_(0))
Array[String] = Array(1, 4)
// 2. apply
scala> a.map(_.apply(0))
Array[String] = Array(1, 4)
// 3. function literal
scala> a.map(a => a(0))
Array[String] = Array(1, 4)
// 4. lift
scala> a.map(_.lift(0))
Array[Option[String]] = Array(Some(1), Some(4))
// 5. head or last
scala> a.map(_.head)
Array[String] = Array(1, 4)
好吧好吧,好像** ** data.head工作......但还是只给我第一个元素,不是任何一个在列表中。 – drozzy 2011-02-13 00:53:59
如果您确定索引不超出范围,请使用** Seq **特征** apply(index)**。 _http://www.scala-lang.org/api/current/?_ga = 1.201071334.935145902.1460491527#scala.collection.Seq_ – Beezer 2016-06-23 19:10:40
data.drop(i).head用于访问第i个元素 – Vinay 2017-04-16 03:54:36