我想要一个具有静态可用的函数的类(它由一个特征收缩)。然后我想要一个类型参数化的方法,它接受这样的类型作为它的类型参数,并访问合同化的静态函数。 (是的,我知道术语static是Java而不是Scala,但你知道我的意思。)伴侣类型的Scala类型约束
我知道在Scala中有一个静态函数的唯一方法是让伴随对象扩展特征。然而,这样做有两个问题:
- 我不知道如何约束类型参数,使它的伴侣对象扩展了一些特质。
- 我不知道我将如何访问静态方法,该类实际上是与其伴侣对象不同的类型。
这可能是完全关闭,但有点是我想要做的是:
MyTrait {
def MyFunction() : Any //some function
}
case class MyClass(i: Int)
object MyClass extends MyTrait {
def MyFunction() = {/*do stuff*/}
}
//need the type as a class not an object because I need it for a higher order function like this
def SomeFunctionHigherOrderFunction[T /*constrain T such that the companion object of T <: MyTrait*/](someFunc : Function1[T, Any]) : Unit {
val someStuff = T.MyFunction()
/*use someStuff in here*/
}
SomeFunctionHigherOrderFunction[T](/*provide a Function1[T, Any]*/);
正确的解决方案的任何想法或要对这个问题的一些更好的方法?
在此先感谢!
你必须使用它你的代码中有些拼写错误。 [确保我们可以编译你给我们的例子!](http://sscce.org/) –