いい一日はいい睡眠から いい睡眠はいい一日から

読んだ記事のあれこれを書いていきます

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パターンという.