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)

時間がかかることapplyに注意してくださいO(N) したがって、これらの操作が大きなリストに対して頻繁に必要な場合は、代わりに使用することを検討してください。sizeListVector

于 2012-10-13T20:25:34.560 に答える