見出し画像

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

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

Q.
やけに苦戦してたけど乱数配列のあれは?
A.
なんか closureクロージャ って言われるやつみたい🙄
JS でも「無名関数」って言われてるやつで呼称も一緒だから知ってる人も居るかな🤤
無名関数はラムダの入り口だと思う🤔

→ Swift は Kotlin に比べて標準実装されてる機能が少ない感じがするがクロージャで賄ってライブラリに余計な増量をしないようにしてるのかも
→クロージャによる制御がかなり多いみたいなので Swift をやるならクロージャの理解は必須
→クロージャじゃなくても実現できるけど余計な関数を作る事になるので不必要に行数が嵩むっぽい🙄
→ [Int] でも joined 使えるっぽいんだけどググると文字配列でしか例が出てこないのでもしかしたらダメなのかも

#学習記 #練習問題 #Swift
#Array #reduce #joined #closure

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

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


【 Swift 】練習01

それじゃ Swift 移植よー🤤
今回のキモは自作部分よりも指定された関数と同等の挙動ができるモノをいかに早く用意できるか、だと思う🤔

画像1

んだばぼつぼつはずめっとすっかlet's start🤤

Kotlin 側で用意されていた型判別は、ワザと try を使う形にしたのか判らないけど、 toInt に掛けて通ればヨシtrue通らずばcatchされたらダメfalseという単純な判定方法だった🤔
Swift にも勿論文字列を数値化する物が標準で有るけどそいつは例外を投げずに nil になる仕様だった🙄
どこかで「 try は実行コストが高く重い」と有り、極力例外を取らない様に済む実装なのかなって感じた🤤
つまり Swift での型判定は数値化によって nil なら false とすれば同じになるかなこれは🤔

………転写して書換え中

型判別より乱数配列の生成の方がめんどくさかった🙄

.map を利用して let でランダム数列を作る
https://qiita.com/lovee/items/f3515119883f05a8dac5

す、すごいwwwそのままの用途が出てきた🤪

………

…エラーになる…😞
他先やろう…

………

sum が無いのでこれも書かないとならないみたい🙄

【Swift】reduceを使ってInt型配列の中身の合計値を取得する(自分用メモ)
https://qiita.com/Tnaga/items/c64bd096cdbe42b354e0

sum は reduce でヨシ👈🤪

画像2

だいぶエラー減ったぞ…🤤
以前も Swift は print 中のテンプレート使用で複雑な式書くと怒られてたからこれもそうかな?🤔

画像3

どうもそうではないらしい…😞

あ、これ配列の初期化のとこ解決してないから出てるのかな?🤔
じゃぁ戻って直すのやろうかな🤤

Swift - init(repeating:count:)で配列を生成するときの注意点
https://qiita.com/pkaTaka/items/3a4acea68507f19056e0

画像4

repeatedValue とか repeating とか指定できるっぽいけど何がどう違うのか全く判らない😞
repeatedValue に乱数式を書くと怒られて repeating に書くと怒られないので毎回ブツが変わるとかみたいな場合は repeating なのかな…?まぁ使ってればそのうち理解できるかも🤪
print のとこのエラーは無くならないので根本的に予想とは別のエラーっぽい🙄

No exact matches in call to instance method 'joined'インスタンスメソッド 'joined' の呼び出しに完全に一致するものがありません
………似たようなのなら有るよって話?🤪
もしくは過去のメソッドだから今は使われてないよってやつだとか?🤔

Swiftで配列をjoin(結合)して文字列にする方法
https://swift.tecc0.com/?p=160

この記事は 2021年9月 になってるから、いくら更新が早くて廃止メソッドだったとしても使える筈だよねぇ…🙄

【SwiftUI】"No exact matches in call to initializer"の原因
https://www.hfoasi8fje3.work/entry/2020/12/25/%E3%80%90SwiftUI%E3%80%91%22No_exact_matches_in_call_to_initializer%22%E3%81%AE%E5%8E%9F%E5%9B%A0

どうも些細な忘れとかで起きているっぽいけど Swift 初心者の自分には判るはずもなく…😞

合計を出してる reduce とやらの書き方を改造したらいけるかな?🤔

画像5

………🤔

コンパイラ的にはヨシってなったけど…そんじゃビルドしてみよう👇ぽちっとな

画像6

一見正しいように見せかけて正しくない🤪

画像7

画像8

🙄

自分自身が入るからパラメータ渡すと args.count は +1 されるオチ🤪

画像9

まぁ、 repeating だったから嫌な予感してたのよ…😞
もっかい map にして書き換えるやつに挑んでみようかな…

画像10

画像11

どうやら文を区切るセミコロンが不要になった代わりに括弧の開始位置とかの間に改行とか入れるとだめとかそういうのがあるのかも🙄
なんか、あんまり良い文法解釈じゃない言語だなって感じたけどなんとかなったしいいや🤤


次回は

残りの言語どっちか。多分 Java 🤤
エラー取れなくて終わらないかと思ったけどなんとかなって良かった😞

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