強調了輸入參數時,我有一個其中包含在那裏我試圖定義默認實現爲「空」的方法一般參數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