我正在編寫我的第一個Scala腳本來感受語言,而且我對於實現某些東西的最佳方式有點卡住了。處理未初始化的語言形式var
我的情況如下,我有一個方法,我需要調用N次,這個方法在每次運行時返回一個Int(可能不同,執行時有一個隨機組件),我想保留最佳運行(這些運行返回的最小值)。現在
,從Java/Python的背景的人,我只想初始化空/無變量,並在比較如果是這樣的:
best = None
for...
result = executionOfThings()
if(best is None or result < best):
best = result
而這是(原諒的半python僞代碼)。
現在,在斯卡拉,我掙扎了一下。我讀過有關選項和模式匹配,以達到同樣的效果的使用,我想我可以編寫了類似的信息(這是我能拿出最好的):
best match {
case None => best = Some(res)
case Some(x) if x > res => best = Some(res)
case _ =>
}
我相信這個作品,但我不確定它是否是寫作它最習慣的方式。這很明顯,但對於這樣一個簡單的「用例」有點冗長。
任何人都可以照亮我的功能燈?
謝謝。
之後你想用'best'做什麼?這看起來像這個任務可以避免。你也可以利用'Option'的monadic屬性來使這個更簡潔一些。 – 2012-04-04 15:11:07
將其返回/打印出來。最好的基本上是算法的結果。 – pcalcao 2012-04-04 15:12:00
然後你可以使用'match'作爲表達式,而不是將它分配給某個東西。 – 2012-04-04 15:18:35