2020/03/23
- 11:30までに家を出る x
- 英単語復習 o
- リスニング o
- Scala o
- こどふぉ x
外出時間
家を出られなくなった.俺のせいじゃない.ちゃんと出られる準備ができていただけに残念.
こどふぉ
こどふぉはやらなかったが,ゆきこはやった
Scala
ストリーム
特定の要素にアクセスするまでその値が評価されず,取得されて初めてその値が評価される.
余再帰関数LazyList
val s = LazyList.iterate(1){ n => println("result 3 + " + n) 3 + n } scala> s(1) result 3 + 1 res0: Int = 4 scala> s(1) res1: Int = 4
2回目は再度評価されず,前の評価値が取得される.
正格関数・非正格関数
実行されない可能性のある関数を含む関数を非正格関数という.
暗黙 implicit
異なる型の引数への型変換
暗黙の利用範囲として,暗黙の型変換・引数の省略(暗黙引数)がある.
Cでいう1はTrueとみなす(少々この書き方には語弊があるが)という処理を実現することができる.
implicit def intToBoolean(arg: Int): Boolean = arg != 0
ただしこれはよくない例である.なるべく使用しない方がよい.
既存の型の拡張
class MasuokaOkadaString(val str: String) { def wao: String = str + ", Wao!" } implicit def toOkadaString(arg: String): MasuokaOkadaString = new MasuokaOkadaString(arg) "Happy Boy".wao // Happy Boy, Wao!
とできる.
implicit class
を使うともっと楽にかける.
implicit class MasuokaOkadaString(val str: String) { def wao: String = str + ", Wao!" }
これらをpimp my libraryパターンという.