【发布时间】:2011-06-29 12:06:31
【问题描述】:
我对 Scala 很陌生,但我正在尝试实现以下情况。假设我有一个特质:
trait SomeTrait {
def kakaw
}
还有两个扩展它的 Scala 对象:
object SampleA extends SomeTrait {
def kakaw = "Woof"
}
object SampleB extends SomeTrait {
def kakaw = "Meow"
}
我想做的是基于参数化函数调用调用这两个对象函数之一。例如(我知道这是离正确最远的事情):
class SomeOther {
def saySomething[T] = T.kakaw
}
所以我可以这样做:
val s = new SomeOther
s.saySomething[SampleA]
这在 Scala 中是否可行?
【问题讨论】:
-
def saySomething(t: SomeTrait) = t.kakaw和s.saySomething(SampleA)有什么问题?也就是说,为什么要费心使用类型参数呢? -
你的具体例子是不可能的,因为
SampleA不是类型,所以不能作为类型参数传递。 -
您的问题得到解答了吗?