强调了输入参数时,我有一个其中包含在那里我试图定义默认实现为“空”的方法一般参数trait
。接受“缺少的参数类型”使用的功能文字
trait MetaBase[T <: Throwable] {
...
def riskWithEvent[V](
vToEvaluate: => V,
failureTEvent: FailureBase[T, V] => Unit = _ =>()
): TryBase[T, V] =
...
}
我failureTEvent: FailureBase[T, V] => Unit =
之后在下划线收到“缺少的参数类型”的错误。我无法弄清楚如何让Scala编译器不必知道当前的类型信息,因为它没有被使用或需要。
我考虑改变参数:
failureTEvent: Option[FailureBase[T, V] => Unit] = None
不过,我不喜欢这样的客户现在必须包裹它们的功能在Some()
。我更愿意让他们不指定参数,或者指定没有包装器的参数。
对此有何指导意见是极大的赞赏。
也许有FailureBase的变化做。无论如何,你都可以使用(_:Any)=>()。 –
默认ARGS可能有其他危害:https://issues.scala-lang.org/browse/SI-7095 –
的'(_:任意)=>()'编译(我还有很多其他的代码来获得重构然后我可以声称它的工作)。我很困惑,为什么下划线本身并不意味着同一件事;即Scala编译器生成的任何代码基本上应该是您确定的显式形式。值得与Scala编译器团队打开一张票吗? – chaotic3quilibrium