私は最初のScalaスクリプトをコーディングして言語の感触をつかんでいますが、何かを達成するための最良の方法については少し行き詰まっています。
私の状況は次のとおりです。N回呼び出す必要のあるメソッドがあります。このメソッドは実行ごとにIntを返し(異なる場合があり、実行にはランダムなコンポーネントがあります)、最高の実行を維持したいと考えています(これらの実行で返される最小値)。
さて、Java / Pythonのバックグラウンドから来て、変数をnull / Noneで初期化し、ifで比較します。
best = None
for...
result = executionOfThings()
if(best is None or result < best):
best = result
そしてそれはそれです(セミパイソンの擬似コードはご容赦ください)。
さて、Scalaで、私は少し苦労しています。同じ効果を達成するためのオプションとパターンマッチングの使用法について読んだことがありますが、次のようなコードを作成できると思います(これは私が思いついた中で最高でした):
best match {
case None => best = Some(res)
case Some(x) if x > res => best = Some(res)
case _ =>
}
これはうまくいくと思いますが、それが最も慣用的な書き方かどうかはわかりません。それは十分に明らかですが、そのような単純な「ユースケース」には少し冗長です。
私に機能的な光を当てることができる人はいますか?
ありがとう。