代码很明显,我看不出它有什么问题。
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] ^
答案 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
上的size
和List
需要时间O(N),因此如果您经常需要对大型列表执行这些操作,请考虑使用Vector
。