5

私はこの方法を書きました:

public def getXScaleFactor(panelWidth: Int): Double = {
  return (panelWidth / (samplesContainer[0].length.asInstanceOf[Double]))
}

コンパイルに問題があります:

[error] ./src/main/scala/Controllers/TrackController.scala:85: ';' expected but 'def' found.
[error]   public def getXScaleFactor(panelWidth: Int): Double {
[error]          ^

このコードのどこが間違っていますか?

4

4 に答える 4

24

publicは Scala の予約語ではないため、変数名として解釈しています。パブリック アクセスがデフォルトです。そのままにしておくだけpublicで大丈夫です。

于 2011-06-03T17:54:41.900 に答える
5

メソッドはデフォルトで public です。削除しpublicます。

于 2011-06-03T17:53:54.577 に答える
4

問題は、Javaコードを作成したことです。

また、コレクションへのインデックス付きアクセス(無効)、明示的な戻り型(不要)、(これも不要)、およびpublic(不要、およびコードの臭い)[]return.asInstanceOf

軽量で慣用的な体験をするには、これを試してください。

def xScaleFactor(panelWidth: Int) =
  panelWidth / samplesContainer.head.length.toDouble

または、samplesContainer空の場合:

def xScaleFactor(panelWidth: Int) =
  panelWidth / samplesContainer.headOption.map(_.length.toDouble).getOrElse(42.0)

デフォルトの代わりに好きなものを42そこに置いてください

于 2011-06-03T18:17:02.930 に答える
4

上記の回答に追加するだけです:

returnキーワードを削除することもできます。関数/メソッドの最後のステートメント/式は、自動的に戻り値になります。

于 2011-06-03T18:13:58.030 に答える