P69 4.3.2 - P84 5.2 遅延リストの例 まで。
4. 例外
- Option型だとどんなエラーが出るか分からない
- Either型だとRightでおーけー、LeftでNGという感じ。
- 例外は本当に本当につかわないといけないときだけつかう。
5. 正格と遅延
- 正格 引数をすべて評価すること。
- 非正格 引数をすべて評価しない。 遅延性とも言われる。
scala> def maybeTwice2(b: Boolean, i: => Int) = {
| val j = i
| if(b) j+j else 0
| }
maybeTwice2: (b: Boolean, i: => Int)Int
scala> val x = maybeTwice2(true, { println("hi"); 1+41 }
)
hi
x: Int = 84
scala> val x = maybeTwice2(false, { println("hi"); 1+41
})
hi
x: Int = 0