我不明白如何正确地在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