見出し画像

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

今回の概略

`case 値1 (message:String="")` 、特に括弧の部分Associated Valueは全部の値で同じなのでなんとか省略したり統合する方法は無いものかと思ったけどできないらしい😞
同様に取り出す時も全ての case で `let message` を入れる必要が有る🙄

#学習記 #Swift
#enum

【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 # ヘルプ

----備忘録
public 装飾子 → open
列挙をカスタムエラーへ
parseCsv の空行問題
Swift の args は OC 同様 [引数+1] 個


前回の粗筋

enum Error を OC みたく使うには全ての列挙値で同じ Associated Value にすれば良かった🤤



enum Error

で、「の前に」なんだけど🤪
前回全ての列挙値を Associated Value にして目標達成したんだけどこれ、同じ事を書くのって効率悪くない?って話😑
調べてる間に出てきてた記事中に、別の enum とか定義してそれを型にするとかやってたからもしかして同じ仕掛けの型を充てがう、みたいな事ができるんじゃないの?って思ったので調査しようと思うお🤤

Swiftの列挙型(enum)おさらい
https://qiita.com/hachinobu/items/392c96820588d1c03b0c

先鋒は またしても enum Error を教えてくれたこの enum の記事☺️

Swiftの列挙型(enum)おさらい
Enum Cases as Protocol Witnesses
https://qiita.com/hachinobu/items/392c96820588d1c03b0c#enum-cases-as-protocol-witnesses

Swift5.3からEnumのcaseをプロトコルで縛ることができるようになりました。
これができることになったことでEnumで表現していたものを抽象化して使えるようになりました。

多分これの様な気がするけれど Swift 学習者に理解できる内容ではないぽ😞

試してみたけど案の定よろしくない…😞

【Swift】associatedtypeの使いどころ
https://qiita.com/akeome/items/78e650f27a4c53e1406a

………実例付きなのは有り難いけど分量が多くて結局良くわからない…😞
なんとなく、しか理解できない😞😞

Swift プロトコルの連想型(associatedtype)
https://okutaro.com/2019/11/10/swift-プロトコルの連想型associatedtype/

連想型の指定方法

typealias 連想型名=指定する型名

typealias は↑で撮影した画面のエラーの fix で出てくるやつだお🤔

😭😭😭

………
あれ?もしかしてこの参考で見て組んだやつって、そもそも Associated Value を持たない enum の書き方なのでは…?🤔
と思ったけど protocol で組んだ最初の状態に戻っただけぽ😞

enum Associated Values と Raw Values を両立させる
https://qiita.com/hugehoge/items/784730ba06a1e6c55c42

この記事を見て思いつくのは Associated Value を持つ列挙値を protocol 設定できるか否か…?🤔

………

………

………

うーん…どうやらできないっぽい…😞
前回出来上がった形がどうやら「現状では」最適解なのかな🤔


次回は

今度こそ復帰するぽ😑
納得行かないけど資料も出てこないし公式資料の和訳っぽいヤツ見ても出てこないしでムリぽ😞
まぁこれは Kotlin の時の「これができないとそもそも動作もしないんだけど?」とは違うので諦めてもヨシ🙄

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