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

相关文章
相关标签/搜索