Akasaka.scala 34に参加してます。タグは#akskscalaです。
Scala言語仕様読書会7 / @seratch さん
詳細はこちら。
- 前回の復習
- メンバーマッチング
- 事前定義
- 修飾子
- 2回出てはいけない
- (a, b)のような定義に先行する場合は両方に
- private → コンパニオンからもアクセスできる。 class-private
- 限定修飾 private[C] → object-private
- protected
- override → 親クラスの具象メンバをオーバーライドするときは必須
- abstract → traitには不要
- abstract override → traitで使える。AIPっぽくなる
- final → abstractやsealedとは使えない
- sealed → 同じファイル内のみ継承できる。サブクラスは継承できる
- lazy val → 無限ループするかも
lazy val y:Int = x lazy val x:Int = y println(x) [RESULT] % scala /tmp/hoge.scala 2>&1 | head java.lang.StackOverflowError at Main$$anon$1.x(hoge.scala:7) at Main$$anon$1.y(hoge.scala:6) at Main$$anon$1.x(hoge.scala:7) at Main$$anon$1.y(hoge.scala:6) at Main$$anon$1.x(hoge.scala:7) at Main$$anon$1.y(hoge.scala:6) at Main$$anon$1.x(hoge.scala:7) at Main$$anon$1.y(hoge.scala:6) at Main$$anon$1.x(hoge.scala:7)
- 用語:valは「値」
- クラス定義
- private, protected でコンストラクタのアクセス修飾
- アノテーション、カリー化された引数の並び
- valだとゲッター、varだとセッターも
- 補助コンストラクタは基本コンストラクタを必ず呼ぶ
- ケースクラス
- 2.9.xから?パラメータリストなしではwarningが出る
- コンパニオンオブジェクトと、copy, equals, hashCode, toString などが追加される
- Trait
- コンストラクタパラメータは定義できない
- オブジェクト定義
- object 宣言は lazy val = new ... とほぼ同じ振る舞い
- 次回は6章
g8 テンプレートをつくってみよう(ハンズオン) / @tototoshi さん
- giter8とは
- github上のプロジェクトをテンプレにできるツール
- csコマンドでインストール
- g8コマンドでテンプレが作られる
- カレントに展開されるので注意
- src/main/g8 の中にテンプレ化したいものを突っ込む
- テストはgiter8-pluginを使う
- Exceptionが出てもビビらない
- 作者のn8hanさんは色々書いているけど、ソースに癖がある
- xsbti.AppMain → sbtから
- カレントに展開されるのは名前を指定してないから
# apply.scala parameters.get("name").map(normalize).getOrElse(".")
- giter8 使ってみるといいのでは
- seratch さんのanorm を使うサンプル