More Related Content
Similar to 【LT資料】ラムダ式でDSL
Similar to 【LT資料】ラムダ式でDSL (20)
【LT資料】ラムダ式でDSL
- 4. 虎の穴虎の穴虎の穴虎の穴虎
の穴虎の穴
Copyright © 2019 Toranoana Inc. All Rights Reserved.
はじめに
1. Kotlinのラムダ式とJavaのラムダとどう違うの?
2. レシーバー付きラムダ式ってなに?
4
<発表内容>
・Kotlin言語特有のラムダ式の書き方,レシーバー付きラムダ式の説明
・(応用として)理解を深めるため自分でDSLを自作
(今回はSQLビルダーっぽいもの)
- 5. 虎の穴虎の穴虎の穴虎の穴虎
の穴虎の穴
Copyright © 2019 Toranoana Inc. All Rights Reserved.
JavaのラムダとKotlinのラムダの違い
5
Javaの場合(インターフェースを実装した無名クラスが作られる)
Kotlinの場合:関数そのものを変数として代入する事ができる。
Kotlinの関数=第一級オブジェクト
- 19. 虎の穴虎の穴虎の穴虎の穴虎
の穴虎の穴
Copyright © 2019 Toranoana Inc. All Rights Reserved.
レシーバ付きラムダ式でDSL
19
抜粋:query関数と、QUERYクラスの実装
1.QUERYクラスのメソッドに利用できるメソッドを定義
(利用するSQLの節を定義する)
2. query関数の引数にQUERYクラスをレシーバーとする拡張関数を宣言
1
2
- 20. 虎の穴虎の穴虎の穴虎の穴虎
の穴虎の穴
Copyright © 2019 Toranoana Inc. All Rights Reserved.
レシーバ付きラムダ式でDSL
20
抜粋:SELECTクラスと、FROMクラスの実装
<役割>
クラス定義:それぞれのSQL節の文字列変換する実装
関数宣言:SQLの文法規則に即してメソッド定義(SQL節)を構造的に宣言
する
引数から受け取った表示するカラム名を追加
- 21. 虎の穴虎の穴虎の穴虎の穴虎
の穴虎の穴
Copyright © 2019 Toranoana Inc. All Rights Reserved.
まとめ
Kotlinのラムダ式(レシーバ付き)についての話
➔ Kotlinの言語仕様の柔軟性でDSLなどの応用も期待
できる
➔ 思った以上に自分の想像のDSLが自作できた。
➔ テーブル宣言にSQL側の型情報を載せるとクエリー
結果のデータバインドもできそう…。
➔ Exposed でOK
➔ (なにより)レシーバー付きラムダ式楽しい!!
21