見出し画像

【Console Application】練習01 3【学習記】

基本文法を学んだ後によくある練習課題みたいなやつをやる話🤤

Q.
またいっぺんにやったの?
A.
凄い時間かかってやめときゃよかったって思った😞

→ Java も OC も古い体系の言語なので配列初期化とかダンプカンマ連結した文字列取るのとかは素直に for で回すしかない
→ 妙な手法を使おうとしても返ってうまくいかないので余計時間がかかる

#学習記 #練習問題
#Java #List #ArrayList #Collections
#Objective_C #NSMutableArray #rangeOfString #componentsJoinedByString

基準になるコードの話をしている記事はこちら

【Console Application】練習01【学習記】
https://note.com/sayka/n/n7b2ba075664f


【 Java 】練習01

それじゃ今度は Java でやろうかな🤤
今回の、 Java でのキモは Swift でも苦労した list の初期化かな🤔
型判別とかは恐らく Kotlin と似た様なやり口文字列の数値化で例外を取るになるだろうから、そんな心配してない🤤
list の初期化部分で余計な変数メモリ関数メモリをどれだけ減らせるか、って事になりそうなんだけど…🙄

そこで以前やった連想配列初期化にクロージャっぽいものがあったので Java におけるクロージャをまず調べてみようかな🤤

asufana/Java8 クロージャ.md
https://gist.github.com/asufana/94378314d8d621cafc21

この記事を見る限りでは大体同じ階念が通じるラムダが導入されてるという感じかな?🤔
つまり Kotlin みたいな標準が無くても Swift みたいな初期化子を記述できる…かも🤪

画像1

画像2

とりあえず Kotlin コード転写してから考える姿勢スタイルで開始よー🤤

画像3

なんとか rnd の初期化子以外は修正🤤
forEach とか有るみたいだけどラムダをかなり掌握していないとできなそうなので基礎的な方法で集計するしかなかった感じ🙄

画像4

結局、 for で中身を入れる等…🤤
まぁでもこの書き方が一番理解しやすいかな…🤔
最新の言語では static だったり const だったりの縛りを付けるのにどうしても初期化子でできてくれないと困るんだけど Java は後から const を初期化する方法が有ったよねぇ?🙄
できる事が少ないなりに頑張ってるのが Java なのかな… Kotlin からのコンパイルが冗長にならないように今暫くは更新されててくれないと困る🤤

余談はさておき ビルド👇ぽちっとな

画像5

🙄🙄🙄

new ArrayList<>(num) って書き方ダメぽ?

JavaでListの要素を初期化・追加する方法
インスタンスイニシャライザを使う方法
https://qiita.com/yuki2006/items/be1433c50002cc24603b#%E3%82%A4%E3%83%B3%E3%82%B9%E3%82%BF%E3%83%B3%E3%82%B9%E3%82%A4%E3%83%8B%E3%82%B7%E3%83%A3%E3%83%A9%E3%82%A4%E3%82%B6%E3%82%92%E4%BD%BF%E3%81%86%E6%96%B9%E6%B3%95

インスタンスイニシャライザとかいうやり方のが良さそう🤤

画像6

😞😞😞

素直に全部 add するぽ😞

画像7

Java は標準だと list の sort とかは機能が無いんだけど、ライブラリとしては存在するのよね🤔
開発としては煩わしいのだろうけどこの豊富なライブラリと細かい import によって肥大化を避けるようになってるのかなって考えると(時代を考えると)極端に悪い手法ではないなと感じる🤤
でもさ、最新の IDE が使われない import とか判定できるんだからコンパイラが自動で使ってないのは弾いてくれてもいいんじゃないの?って思わなくもないけど動的にライブラリ名を生成して import とかやるやつがあったら積む🙄可能なら自分だと作りそうな構成だし


OCObjective-C 】練習01

画像8

時間あるから OC もやっちゃおうかな!🤪

あれ…?
これどうやって文字列が数値か判別するんだろ…?🙄
String.integerValue というのが有るようだけど、これは非数でも 0 が返ってくるみたいで nil にさえならない…どうするのこれ…😞
まぁ、今回の処理では 0 も除外なので 0 なら false を返す、でも通るけど関数の挙動としてはよろしくない…🤔

iOSで簡単に文字列の数値チェックを行う方法
http://csfun.blog49.fc2.com/blog-entry-124.html

ええええ…正規表現でやれよって?🤪
いいのかそれで…?🤤

画像9

😞😞😞

めっちゃ時間かかってこれ…やめときゃよかった😞

画像10

NSMutableArray の初期はは init じゃなくて array を指定するらしい🙄
なんでそこ、例外みたいに init にしないの?🤪

画像11

やれやれ…🤤できた


次回は

今回の練習問題で得られた知見とかをまとめようかな🤤

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