我无法弄清楚如何(如果有的话),您可以为类型-Scala中的参数设置默认值。
目前我有一个类似的方法:Scala中类型参数的默认值
def getStage[T <: Stage](key: String): T = {
// Do fancy stuff that returns something
}
但我想要做的是提供getStage
的实现,它没有任何价值T
并使用默认值来代替。我试图只定义另一种方法并重载参数,但它只会导致其中一种方法被另一种方法完全覆盖。如果我不清楚我想要做的是这样的事情:
def getStage[T<:Stage = Stage[_]](key: String): T = {
}
我希望我很清楚我在问什么。有谁知道这样的事情可以实现吗?
'getStage'如何返回'T'类型的值(因为'T'可以是任何适合的类型)?大概你不得不使用'asInstanceOf'或类似的东西,这通常是不可取的。你能否更详细地解释一下这个代码是如何被调用的,以及你想要实现的是什么? – DNA 2015-04-02 14:11:06
很可能我做的事情完全错误,因为我还没有变得习惯于Scala的做法...... getStage方法定义的类管理着一个Map [String,SyncStage] '实例变量。我打算使用匹配来确保对象是预期的类(因此不需要'asInstanceOf'),否则会引发错误(因为键不是运行时指定的变量,所以不会发生这种情况)。我有另一种方法可以一起避免这一切,但我想知道是否有可能,因为我已经处于另一种类似的情况...... – evotopid 2015-04-02 14:19:11
有没有这样的事情作为默认的类型参数。有可能解决类型约束问题,但避免这种情况可能会更好。 – 2015-04-02 14:29:03