【Console Application】ファイルとデータベース 170【学習記】
ファイルとかデータベースの話🤤
→ライブラリとしては結局 lateinit 修飾子を付けて init で確実に初期化する形にすればプロパティを宣言だけして後から初期化できてかつ null 安全になるっぽい🤔
→多分本来は定義即初期化が正義なのだと思うけど引数によって初期化するには結局この lateinit 修飾子でしかできない…(と思われる
#学習記 #Kotlin #lateinit #null安全
Csv
はてさて、 null 安全化を果たす事はできるのだらうか😞
………
どうやらやろうとしている事は、結局 lateinit を使う、が FA っぽい🤤
プログラム的に正しく初期化が終わっていれば null 安全になる、というモノみたい🤔
以前の学習で使った lateinit は列挙のエイリアス作成の時かな?🤔
定義の段階では実態が無いのでプロパティ宣言の列挙中に別名列挙メンバーを作ろうとするとコンパイラに怒られるので遅延設定が要るという物だったと思う🙄
でも調べると使ってるのは lateinit ではなく by lazy で別の遅延初期化なのよね…😞
記事を見る限りでは列挙のエイリアスは固定の値を返すので by lazy で良かった、というとこかしら🤤
lateinit はプリミティブでは使えないとあるけど Int とかはさすがに null 許容にしなくて平気だからプロパティの「オブジェクト」で null 安全で宣言時に初期化しないなら lateinit 付けとけば良いって事になるっぽ🤔
init や init が呼ぶ初期化処理で初期化できなかったら例外が出るようになるのでプログラマーの負け🤪
(なにしろ null 安全を目指してそういう作り方にしようとしてるんだから利用者側の失敗でエラったらダメよねw)
ではまずファイル名関連から…😑
init では4つとも初期化されてるからこないだ saveCsv に足した null 安全変数への変換を消してプロパティ直参照に切り替えられるお🤤
後は cells かな🤤
次回は
一番問題なのは多分、プロパティ cells の null 安全化かもしれない…😑