マルチプロジェクトの作成
$ sbt new mattsu6/multi-sbt.g8
MySql
$ docker exec -it CONTAINER_ID /bin/bash
$ mysql -u sample -p -D mydb -h localhost -P 3306
Future
http://mashi.hatenablog.com/entry/2014/11/24/010417
ExecutionContext
- 非同期処理の仕組み
- タスクを適切にスレッドに分配する
- 一定数を最大としたスレッドプールを保持し、空いているスレッドにタスクを割り当てる
fufuter apply
Fufure {}
- Futureインスタンスの生成
- CPUコア数分のスレッドを使う
await
Await.result(f, Duration.Inf) Await.redy(f, Duration.Inf)
implicit parameter
- クラス定義とメソッドの実装を分離する
- 既存クラスでも後から自由に変更できる
- 型クラスは、implicit parameterを使ったパターンのこと
暗黙にする理由
- コンパイルエラーによる証明
- Howを分離し、whatを重要視する(
filter()
)
注意点
- 自明な定義になっていることが重要
implicit conversion
- 定義を変更できないクラスにメンバを追加したい
- 追加したいメンバを保持したクラスを定義し、型としてはそのクラスを使わない手法
- 既存のクラスに対して、振る舞いを追加するだけ