以前いた現場ではKotlinを使うことになると言いつつ結局色々あってほとんど使わないままだったが、今度の新しい現場ではまたKotlinを使うことになりそうなので改めて勉強を進めてみた。
lazy
プロパティの初期化を値が最初に読み込まれる時まで遅延させるもの。Javaでやろうとすると多分以下のような感じになるんだろうが、
private String val = null; public String getVal() { if (val == null) { val = ... } return val; }
Kotlinだとあんまりnullを使うこと自体好まれないように感じられるので、そういうときに利用されるんだろう。
object
クラスをシングルトンとして宣言してくれるらしい。Javaだとちゃんとしたシングルトンの実装をしようとするとちょっと冗長になりがちなので、シンプルに実装できるのは便利そう。
スコープ関数
以下の5つがある。
- with
- run
- let
- apply
- also
個人的に便利そうなのはletで、こちらを利用して値がnullでないときに処理を実行したりできるらしい。JavaScriptのletとなんか記憶が混ざりそうだが。
オブジェクトに変更を加えて返すapply(とalso)なんかも以下を見る限り場合によっては役に立ちそう。
use
リソースのクローズに関する処理。Javaのtry-with-resourcesよりはシンプルか?いやあんまり変わらない気もする。
こうしてみると色々あって全部使いこなせるかちょっと心配だが、Java8のstream APIもなんだかんだで使っているうちに理解できるようになったので、これらも最終的には便利に感じるようになるんだろう。