![見出し画像](https://assets.st-note.com/production/uploads/images/89264578/rectangle_large_type_2_396c5b63136de169686631af8cc57ebe.png?width=1200)
【Console Application】ファイルとデータベース 163【学習記】
ファイルとかデータベースの話🤤
Q.
inner? static?
A.
inner が付くと外側がインスタンス化前提の内部クラス、付いてない場合は単に外側のクラスはコンテナの役割しか持たない、という違いが生まれるっぽい🤤
→今回内容的には最初に移植したライブラリのデバグ準備
#学習記 #Kotlin #typealias #内部クラス #inner
【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 # ヘルプ
----備忘録
(現在無し)
の前に
言語的な違いにより Kotlin が Java よりすっきりしたコードとは言え動作試験は要る気がした🤤
IntelliJ がエラーで教えてくれるとは言え、理論的不具合までは教えてくれないからやっといた方が良いよねっていう🤔
Console
readLineKT
AnalyzeArgs
_init
validOpt
MathUtil
rnd
StdlibKT
arrayStringToString
tableStringToArrayString
![](https://assets.st-note.com/img/1666096521324-QRVYOo7mtk.jpg)
………あれ? typealias ってこういう使い方じゃなかったっけ?🙄
………
軽く文献をググってみたけどそんなおかしな使い方ではないみたいなんだけどなんか拒否られる…😞
【Console Application】基本文法 26【学習記】
https://note.com/sayka/n/n667bdfc687ad
過去の学習記で書いた記憶が有ったので検索したらヒット☺️
どうやらクラスの名前を略的に使いたい用途では良くないっぽい🙄
static クラスなら構わないけどインスタンス前提になってるクラスで typealias は余り都合が良くないみたい😞
過去の学習記と同じく、 jsx と同じ手法で行くぽ🤤
![](https://assets.st-note.com/img/1666096539321-OEt7oEuNZt.jpg)
🙄🙄🙄
[Kotlin]内部クラス – 入れ子クラスとの違いとは?
https://pouhon.net/kotlin-inner/3513/
………
どうやらこの場合
Console.AnalyzeArgs()
Console().AnalyzeArgs()
という違いが存在していて現状の Console クラスの書き方だと前者の書き方をしないと通らないみたい😞
その割には typealias 通らないな!🤬
で、↑の内部変数化の方だと CON は Console() なので inner が付いてない AnalyzeArgs は「そんな内部クラス知らん」となるっぽい…🙄
inner 付けると Console.AnalyzeArgs() ができなくなるし両対応って無いのかな…🤔
ネストされたクラス
https://dogwood008.github.io/kotlin-web-site-ja/docs/reference/nested-classes.html
想定以上の事は書いてない…😞
Kotlin - 内部クラスとネストされたクラス
https://blog.y-yuki.net/entry/2019/05/23/003000
Kotlin の場合は、明示的な修飾子を付与しない内部クラスは、Javaにおける static 修飾子が付与されたネストされたクラスと同等です。
そのため、暗黙的に内側のクラスは、外側のクラスへの参照を持っていません。
逆に、内部クラスが外側のクラスへの参照を持った状態にするには、内部クラスに innrer 修飾子を付与する必要があります。
………🤔
こうやって Java と static の話を出してくれるのは有り難い🤤
理論的にどうとか以前に中身は Java なのよねそういえば🤪
StdlibKT はそもそもただのライブラリでそれ自体のインスタンスには大きな意味を持たないので inner は別に要らないかなこれは🤔
![](https://assets.st-note.com/img/1666096606382-v97TgYL4OW.jpg)
念の為 null 許容で作ったけど最初から main の args の型を良く見ればよかった…🤪
null チェック要らなくなるっぽい🤔
![](https://assets.st-note.com/img/1666096643547-lXKhSlTHqw.jpg)
![](https://assets.st-note.com/img/1666096643626-KMUeh5v6IG.jpg)
? とか !! が外れて null チェックが消える…🤤
………
これ、 args が String? だったから null 非許容の a に一旦入れるって処理だったんだけど args に戻せるよねこれ?🤔
![](https://assets.st-note.com/img/1666096700247-pyimlXiqVg.jpg)
args に戻して平和に🤤
これ `if(validOpt(args[i])){this.options}else{this.arguments} = args[i]` みたいにして代入する変数を if で選ぶとかできたらいいのになって思った🤔
………
流石に左辺の if は無理ぽだった🤪
これが JS なら `this[validOpt(args[i])?"options":"arguments"] = args[i]` なんだけど…🙄
次回は
動作試験のコード組むぽ🤤
準備だけで終わっちゃった…やっぱり言語が違うと大きく勝手が変わる🙄