見出し画像

【Console Application】ファイルとデータベース 191【学習記】

ファイルとかデータベースの話🤤

Q.
vararg の挙動?
A.
どうやら引数自体無いのと同じ挙動になってくれるみたいってのに気付いた話🤤
そこのところは他の言語の可変引数と同じにしてくれてるのかな…多分🙄

→ null 安全・許容の修正をしていたら可変長引数の概念が間違っていた事に気付くの巻🙄

#学習記 #Kotlin

【Console Application】ファイルとデータベース【学習記】
仕様
https://note.com/sayka/n/nb8a67fa90a64?magazine_key=m7bb64c6a359f#br1mB

仕様
レコード
・レベル
 1-12
・難易度
 b,n,h,a,l
・曲名
・ランプ
 -,x,a,e,c,h,e,f

オプションスイッチ
-u file.csv # 更新(略値)
 ファイル名だけ指定した場合更新処理と見做す
-d file.csv # 削除
-p # csv 出力(略値)
 何も指定せずに起動した場合出力処理と見做す
-v # バージョン
-h # ヘルプ

----備忘録
AnalyzeArgs で引数の並びが判別不能になる機能不足を解消
loadCsv の解析部分は独立
Record.validRange の例外
Record.validType が TXT としか比較してない
Record.setValue の一時 RecordElement 変数を無くせる?
Record.toStringValues は何故か1行になってない
reflection KClass への修正
万能指定 Class<?> の Kotlin 方式への書換え
DBAccesor.loadTable での this.record の配列初期化579行目は rClass で作って初期化しなくても良いのでは?
DBKey() の int id 無意味


DBAccessor

移植は続くどこまでも🤤
と言っても今半分くらいらしい。問題なのは DBKey どかの後発クラスは先送りしているってとこかな🙄
………幾つかの機能が無くて怒られるけど先に実装しちゃおっかな🤪

🤔🤔🤔
結構な量の後回しが発生してるっぽ🤔

………この移植元Javaのコードの int id 、何の為に用意したんだろ…完全に無意味じゃんね🙄

static で略値指定してるけどこれ編集したい文字列だからここから新しい String を生成しないと static で編集できない…かも?🙄
var 定義だから平気だと思うけど参照元が1つしか生成されない気がするから一応回避しとこ🤔

指摘が有り難い事の方が多いけど今回は黙れ🤪コレデイイノダ

ローカル変数の色が暗くて見辛い…😞明るくしとこ

DBKey 内で呼んでる getColumnIndex のために先に実装したけどこれの中でまだ移植してない getColumnNames 呼んでてこれがめんどくて先送りにしてたのよね😞

DBKey で親クラスの getColumnIndex を呼ぶには inner class にしないとならないけどそうすると companion が死ぬ😞
まぁこれは DBADBAccesor 側で持てば良いので DBKey から外に出すだけ🤤
ただ、 DBA 側の companion object を移植する場合に注意が要るかな、場所が変わるから🙄

getColumnNames のすぐ手前、 loadTable の次にあるこの getRows 、メンバーの rows の getter として書いたら良いのかな?もしかして🤤

val に変更して代入禁止に🤤

この getColumnNames で返してる cNameCache は by lazy で this.rAlias.getNames() を設定したら Kotlin 的に美しくなりそう🤤
でも今回は getColumnNames を呼ぶのでそのまま🙄

Kotlin だと配列 Array が標準で mutable なので List から Array へ移す部分まるごと無くなってスッキリ🤤

後は DBKey のコンストラクタが null 安全で呼んでる方DBAは null 許容なもんでエラー出てるんだけどどうしようかな…😑

んん?これは書かなくても良かったって事?🙄
vararg のしくみが良くわからない😞
無ければ無いで0個にしてくれるのかな…?🤔
まぁ、サブキー無しの使い方すれば分かるのかも😑今は無効化

ひとまずリフレクション関係以外のエラーは一旦無くなった🤤


次回は

DBKey 付随で後回しでいいかな、にしてた generate 関連の機能を先に移植しちゃおうかな🤤
すぐ終わるようなら後半続き🙄🚩

この記事が気に入ったらサポートをしてみませんか?