Step by Step Scala [vol.03]@scala-be

講義のメモ書きを以下に。
基本は講師の方の発言と受講者の質問です。


require について
requireは単なるメソッドに過ぎないです。=> Predef.scala参照
インスタンスを作る時点で評価して、requireに渡した式が
満たされなければインスタンス作られない。


暗黙の型変換について
書き方

implicit def intToRational(x:Int) = new Rational(x)

メソッドの名前は何でも良くって、これも単なるメソッド。
定義した直後から(変換が)使える。
終わりはスコープを最後に閉じた所まで。
implicitは複数定義できるか? => ok。定義が重複した場合はエラーになる。
限定的にimportしたくなったらブロックの中で(無ければ作って)importすれば良いよ。


Implicit def の有効な使い方は??
自分で文法みたいなDSLみたいなものを作りたい時に便利っぽい。
(影響範囲を小さくするため)小さいスコープでimportするのが良いのではないか。


Stringが暗黙のうちにRichStringになってる場合に
同じ文字列を==で比較する時にStringとRichStringで比較した時に同じにならない。
いつの間にか型変換される場合があるので、注意しましょう。


whileについて
whileは再帰で書けるよ。scala的にはwhileはあまり書かない。
ただ、無限ループとかは素直に while で書いた方が意図が伝わるよ。
forよりwhileの方が速いらしい。
もし、そこがボトルネックになっているのなら、
whileに書き換えて、手続き型っぽく書くのもあり。


などなど。