Я новичок в 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)
? То есть, зачем вообще заморачиваться с параметром типа? - person Rex Kerr   schedule 18.02.2011SampleA
не является типом, поэтому вы не можете передать его в качестве параметра типа. - person Daniel C. Sobral   schedule 18.02.2011