【Console Application】コマンドライン引数【学習記】
いわゆる argv の取り扱い🤤
Q.
スマホでコマンドライン引数なんて使わないのでは…?
A.
た、確かに🙄
でも Windows 11 で Android アプリ、macOS で iOS アプリ動かす時に役に立つかもよ?🤪
→ Kotlin は Java にコンパイルされるくせに配列の大きさは length ではなく size 🙄
→ OC で文字列テンプレートは、やはり難しい様でフォーマッタの利用が限界😞
→ swift の arguments は ProcessInfo というオブジェクトから参照してくる
#Objective_C #Kotlin #swift
#arguments #argv #配列 #for
#学習記
それじゃ argv やろうかな🤤
の前に
現状を保存🤤
作り直したので履歴が無いからやっとかないとね☺️
まだ今みたいにバージョン管理が行き届いてなかった頃はフォルダごと複製して履歴にしたりしてたんだけど楽になった…🤤
Kotlin の arguments
じゃ、開いてる kotlin から開始しようかな🤤
自動生成で最初から引数が書かれてて配列の使い方探すだけ…簡単🤪
for の書き方が今風な感じで基本全部 in で済ませちゃうのかな。右辺が全部何かしらの値束になる式になってるから🤔
文字列中に変数名を埋め込める文字列テンプレートが使えるのはイイゾー🤤
E4X では使えないから jsx 開発で毎回文字列結合がめんどくさい😞
挙動は java と一緒かな🙄
スクリプトネームは入って無いところが java 的🤤
Objective-C の arguments
所謂 C 言語なので伝統的な "int argc,char **argv" 🤔
こちらも自動生成で最初から書かれてる親切設計🤤
ぶっちゃけ古来の書式のままなので新鮮味ゼロ🤪
タイムスタンプうざ!🙄
readLine() のとこだけ急に😒ってなってる感じで滑稽🤪
swift の arguments
Swift4で書く、引数を取るコマンドラインプログラム
https://qiita.com/sahara/items/07a796f9a018b5f51bca
let argv = ProcessInfo.processInfo.arguments
swift はなんか JavaScript っぽい感じで main 関数みたいなのが定義されてないので標準で波括弧スコープが有る物と比べてインデントがゼロなので変な感じしてたのよね🙄
で、いわゆる main 関数で駆動しているわけじゃないので CGI みたく動作中環境変数みたいなものを参照する必要が有るみたい🤔
↑記事では for の書き方も出てるので拝借🤤
こちらはなんか kotlin に比べよりラムダ式っぽい感じになってるのが印象的🤔
for を function か class みたいな形にしててより「文法的な予約語ではなくビルトインオブジェクト」って感じなのかな🤤
🙄🙄🙄
おっとー swift の arguments のスクリプト名はフルパスだわ🤪
もしかしたら ProcessInfo からはファイル名だけ、パスだけ、ってのが取れるのかもね🤤
挙動としては C 互換にしてある感じが良く分かる☺️
おまけ
NSLog のタイムスタンプが鬱陶しすぎるので別の出力方法に変更😞
NSString stringWithFormatの引数の便利な指定
https://qiita.com/SatoTakeshiX/items/354fc7643a1c800ec5b9
NSLogとprintfでの文字列出力
https://oversleptabit.com/archives/1184
伝統的な printf() に御登場いただきました🤤
readLine() の時みたいにファイルハンドルを割り付けて fprintf() でやる方法も有るけど今回はタイムスタンプだけ消えてくれればいいので簡単な方の printf() で🤪
………なんか最後の出力に改行が余分に付いてる感じするんだけど…🙄
ま、いいや🤪
次回は
次に進む前にこの OC の printf をもっと短絡指定できるように改造しようかな🤤
そして外部関数化してライブラリが育つ🤪