私は最初のScalaスクリプトをコーディングして、言語を感じています。何かを達成するための最良の方法についてちょっと固まっています。初期化されていない変数を扱う慣習的な形式
私はN回呼び出す必要のあるメソッドを持っていますが、このメソッドは実行ごとにIntを返します(実行にはランダムなコンポーネントがあります)。最善の実行(これらの実行で返される最小値)。今
、Javaの/ Pythonの背景から来て、私は単にヌル/なしで変数を初期化し、場合に比較し、のようなものでしょう:
best = None
for...
result = executionOfThings()
if(best is None or result < best):
best = result
そして、それは半ため(その恩赦ですPythonの擬似コード)。
今、Scalaでは、少し苦労しています。私は、同じ効果を達成するためのマッチングオプションとパターンの使用方法については読んだ、と私は(これは私が思い付くことができる最高だった)のような何かをコーディングすることができると思います:
best match {
case None => best = Some(res)
case Some(x) if x > res => best = Some(res)
case _ =>
}
私は、この作品と信じてしかし、それがそれを書いている最も慣用的な方法であるかどうかはわかりません。それは十分にはっきりしていますが、このようなシンプルな「ユースケース」については少し冗長です。
私に機能的な光を照らすことができる人は誰ですか?
ありがとうございました。
後で「ベスト」と何をしたいですか?この割り当ては避けることができるように見えます。おそらく、これをもう少し簡潔にするために、 'Option'のモナド性を利用することもできます。 –
それを返す/それを印刷する。最高は基本的にアルゴリズムの結果です。 – pcalcao
'match'を式に代入するだけで、何かに代入するのではなくて使うことができます。 –