2

代码很明显,我看不出它有什么问题。

object TestX extends App {

  val l= List[String]( "a","b","c" )
  val n= l.size

  def f( i:Int )= l[(i+1)%n ]
}

编译器输出(Scala 2.9.2):

  fsc -deprecation -d bin src/xxx.scala
  src/xxx.scala:11:错误:需要标识符,但找到整数文字。
    def f( i:Int )= l[(i+1)%n]
                         ^
4

1 回答 1

11

方括号[]在 Scala 中用于声明或应用类型参数。在序列或数组中获取元素是可以省略的apply(index: Int)方法。apply因此:

def f(i:Int) = l.apply((i + 1) % n)

或短

def f(i:Int) = l((i + 1) % n)

请注意,applysize需要List时间 O(N),因此如果您经常需要这些操作来处理大型列表,请考虑Vector改用。

于 2012-10-13T20:25:34.560 回答