![見出し画像](https://assets.st-note.com/production/uploads/images/90973852/rectangle_large_type_2_87aaeae02ed3ac909eba715bd8d08b88.png?width=1200)
【Console Application】ファイルとデータベース 180【学習記】
ファイルとかデータベースの話🤤
Q.
RecordElement<String,String> って書くの面倒そう
A.
そう、中身必ず String,String だから書く必要無いのに書かされる🙄
ジェネリクスにすると「どうせ書く必要が有るんだから書け」って言われてるみたいで気に食わない😞
→ Kotlin はジェネリクスやコンストラクタオーバーロードに対してはちょっと弱い言語なのかも
→初期化引数として型不明って使い方したいだけなのにコレクションとして指定が要る ( Java ではできてたのに)
→ getter,setter の型違いオーバーロードが上手く作れない
→コンストラクタでプライマリを書くとセカンダリと位置が大きく離れて確認が不便に
#学習記 #Kotlin #generics #constructor
【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 の解析部分は独立
generics
前回の getter で違う型を返す方法、もう少し調べたい🤤
………
………
………
複数の値を返す Pair,Triple 、ラムダ、「引数」の型推論………
なんてのが出てくるけど全部「ソレジャナイ🙄」なんだよねぇ…😞
Kotlin だって言ってるのに Java が出てきたりあまつさえ TypeScript が出てきたり…😞
………
だめぽ…出てこない😞
どう調べたら出たんだったろ…ジェネリクスの時だったおのは間違いないんだけど…🙄
… Kotlin ジェネリクスを調べてた頃の記事に手がかり無いかしら🤤
………
どこかでやった気がしてたけどそもそも Kotlin のジェネリクスはまだ何もやってなかったっぽい😞
………
思いついたのを試すだけ試してみようかな…
![](https://assets.st-note.com/img/1668193846291-P4DvkXB10g.jpg)
![](https://assets.st-note.com/img/1668193858070-y4ai6pWIQn.jpg)
まぁ、そうよね🙄
思いつく手法は尽きたから諦めて Record クラス移植するぽ😞
Record
![](https://assets.st-note.com/img/1668193917241-ahrVUprOTk.jpg)
………なんか IntelliJ が🤬だお🙄
テンプレートの書き方が良くないぽ?🤔
![](https://assets.st-note.com/img/1668193934810-7qU19s4fsM.jpg)
プライマリをちゃんと用意すればいいのかな?って思って、でもそれだとセカンダリが離れてて見辛いから上にってやったら init はプロパティの後に書かないとならなくて怒られるし Record 側のインスタンス化のとこは相変わらずエラーだしでこれはだめぽ😞
![](https://assets.st-note.com/img/1668193958870-WJDsouSjRE.jpg)
………なるほど、現在の書き方だと List<String> 的な指定が要る使い方になるのね🙄
うーん…配列の場合は型の指定が必要だけど RecordElement は中身の型は固定だから各セカンダリコンストラクタのとこで指定できれば良い筈なんだけど…🤔
![](https://assets.st-note.com/img/1668193996487-SmYYMXT23V.jpg)
![](https://assets.st-note.com/img/1668193996568-j0tazLR3fO.jpg)
![](https://assets.st-note.com/img/1668193996633-fH6PjScvKw.jpg)
🙄🙄🙄
………
【Kotlin】やっぱりジェネリクスの関数オーバーロードは出来ない
https://bottoms-programming.com/archives/kotlin-function-overloads.html
現実的な解決策: 諦めて別の関数を作る
解決策を探してたら手前の段階で探してた系統の情報が出てくる等🙄
やっぱ駄目なんだこれ…😞
うーん…なんか調べてみたけれどできないっぽい…
道はジェネリクスのまま Record 側での new は RecrodElement<String,String> で通すか、ジェネリクスを諦めてセカンダリコンストラクタを量産するか…😞
![](https://assets.st-note.com/img/1668194047446-WOjtWxfCrP.jpg)
![](https://assets.st-note.com/img/1668194047517-WCEX6Zx1h3.jpg)
力技で解決💪😤
そうよ、外から使う時に変な苦労を背負わせちゃ駄目なのよ😞
ほんとはやり方あるのかもしれないけどまぁこれが一番平和かなって思う🙄
保守性は低いが致し方なし🤪
次回は
Record の移植を続けようかな🤤
この記事が気に入ったらサポートをしてみませんか?