我不明白如何正確地在Scala中應用泛型類型。我設法實現了自己的控制結構(「除非」,「ForEach」),但它們目前僅限於「Int」類型......有誰知道如何更改適用於泛型類型的實現?Scala問題自定義控件結構<->類型參數
落實此事doesn't那麼多的我,但我真的想保持控制結構像現在這樣:
import Controls._
val Cond = false
val Elements = List(1,2,3)
Unless(Cond) {
var sum = 0
ForEach {
sum += Element
} In(Elements)
println("The Sum: " + sum)
}
我試了好幾個小時,但我不知道解決辦法用於類型參數的問題。 Here's我的 「內部」 的實施有限:
object Controls {
def Unless(cond: => Boolean)(block: => Unit) = {
if(!cond) block
}
var current = 0
def ForEach(block: => Unit) = {
new {
def In(list:List[Int]) = {
list foreach { i =>
current = i
block
}
}
}
}
def Element = current
}
任何hint's是非常歡迎的我'真的卡住現在...
我對您的解決方案有了一點打動 - 非常感謝Daniel!我不知道這樣一個事實,即編譯器可以像在「ForEach」的定義中那樣從塊參數推斷出一個類型參數。我需要找到關於類型推斷的詳細文檔... – 2010-11-04 10:17:57
哦...現在我明白了! :) – 2010-11-04 10:32:44