log

日記です

(´・ω・`)

定時で帰ると酒を飲んだあとにも時間がある。すごい。

長文書こうと思ったけどやめた。

細かすぎて伝わらないようで最高なtips。今日使ったscalazのメソッドを書く。

安全にmimByやmaxBy、あるいはtoIntを行う

case class HogeClass(id: Int, size: Int)

val hs = List(Hoge(1,1), Hoge(2,2,), Hoge(3,3)

hs.minBy(_.size)
// Hoge(1,1)

hs.maxBy(_.size)
// Hoge(3,3)

// 普通。でもListがemptyだとエラーに。

List().minBy(_.size)
// エラー


// モナディックな我々としては安全に操作したい所。TryやEitherで囲んでもいいけど冗長な記述がカッコ悪い。
// ラップした関数を作りたくなる。しかし、ScalazにはminimuByがある。
// これはOptionにくるんで返してくれる。

hs.minimumBy(_.size)
// Option(Hoge(1,1))

List().minimumBy(_.size)
// None


// toIntも、parseIntがそれっぽく。
"1".toInt
// 1

"hoge".toInt
// エラー

"hoge".parseInt.toOption
// None

"1".parseInt.toOption
// Some(1)

ムズカシイ思想までいかず、Optionに魅力を感じているレベルでもScalazを使ってみる利点はあるなーと思う。単純にシンプルになるから。