Kotlin で .properties ファイルを1行でロードする
Kotlin を使って .properties ファイルを1行でロードしてみます。
結論
import java.io.File import java.util.Properties fun main() { val properties = Properties().apply { File(".properties").inputStream().use(this::load) } }
解説
こちらの記事 https://qiita.com/Toshimichi/items/03ca398d7717405de695 の余談にある、3行で .propertiesを ロードするコードが原型となっています。
val properties = Properties() val file = File(".properties") file.inputStream().use(properties::load)
このfileという変数は、.properties をロードした後は使わないその場限りのものです。 こういう時、スコープ関数が役に立ちそうです。
スコープ関数を使って file 変数を中に閉じ込める
val properties = Properties().apply { val file = File(".properties") file.inputStream().use(this::load) }
この apply 関数 がスコープ関数 (の一種) です。 apply 関数では、引数のクロージャ内で this を用いてレシーバを操作することができます。 返り値はそのままレシーバになるので、宣言と同時に初期操作したい場合や、初期化のための余計な変数を散らかしたくない場合に役立ちます。 スコープ関数については、 Kotlin スコープ関数 用途まとめ - Qiita が非常に分かりやすいです。
あとは、諸々整形して1行になります。