2015-10-08 62 views
2

scala.util.Success沒有apply方法,但繼承了scala.util.Try(AFAIK)中的方法。但所有scala.util.Try.apply確實是撥打Success.apply包圍try catch塊。這是不是無限遞歸,這是如何觸發catch塊?爲什麼scala.util.Success.apply無限遞歸?

+0

好吧,我看到參數Try.apply是一個函數,所以你正在評估它;但在Failure.apply的情況下,該參數是Throwable,我無法追蹤Throwable和Function之間的任何隱式轉換。特別是因爲Throwable實際上是java類,java.lang.Throwable。 –

+0

'Try.apply'是按名稱函數調用的,如註釋所述。所以'Try(mayThrowException)'不會在'Try'之外被評估,而是在'Try'對象的'try Success(mayThrowException)'語句內,而'Sucess'是一個熱切評估參數的case類,'mayThrowExecption'得到作業在這裏完成。 –

回答