因此能夠有函數
None.foreach( throw new IllegalStateException) // 1 None.foreach( _ => throw new IllegalStateException) // 2 None.foreach( println("Bla") ) // 3
其中,code
由於傳遞給None.foreach
的參數是一個函數,可是這個函數本事是按值傳遞的參數。所以,若是傳入的是一個函數,函數內容是拋出一個異常(_ => throw new IllegalStateException
),該異常並不會發生。可是若是傳入(throw new IllegalStateException
),那麼該異常就會在None.foreach
函數被調用並返回Nothing
(Function1的子類型)前發生。io
至於代碼3不可以執行,由於println("Bla")
並非一個函數,參數類型錯誤。foreach