Scala编译器错误:“预期的标识符,但找到整数文字”。为什么?

时间:2012-10-13 20:21:57

标签: scala

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

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: error: identifier expected but integer literal found.
    def f( i:Int )= l[(i+1)%n]
                         ^

1 个答案:

答案 0 :(得分:11)

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

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

或短

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

请注意apply上的sizeList需要时间O(N),因此如果您经常需要对大型列表执行这些操作,请考虑使用Vector