Scala中關於Option和foreach的一個問題

  1. Option能夠看作一個Collection
  2. Option[null]至關於None

因此能夠有函數

None.foreach( throw new IllegalStateException)      // 1
None.foreach( _ => throw new IllegalStateException) // 2
None.foreach( println("Bla") )                      // 3

其中,code

  • 代碼1 能夠拋出異常IllegalStateException
  • 代碼2 不拋出異常
  • 代碼3 不可以被執行

由於傳遞給None.foreach的參數是一個函數,可是這個函數本事是按值傳遞的參數。所以,若是傳入的是一個函數,函數內容是拋出一個異常(_ => throw new IllegalStateException),該異常並不會發生。可是若是傳入(throw new IllegalStateException),那麼該異常就會在None.foreach函數被調用並返回Nothing(Function1的子類型)前發生。io

至於代碼3不可以執行,由於println("Bla")並非一個函數,參數類型錯誤。foreach

相關文章
相關標籤/搜索