昨日から配列の部分を実装してみました。表示自体は変わりませんがコードのリストが半減しました。配列を使うとコードが激減します。
上の画面の左側は下記の本で説明してあった例題です。下のピンクの部分をタップするとランダムにグー、チョキ、パーが表示されます。
これをもとにアレンジしたのが右側の画面です。
一人でじゃんけんをしても面白くないので、2人でジャンケンするようにしました。
リストの変更点は次のようになります。
struct ContentView: View {
@State var YourAnswerNumber = 0
@State var MyAnswerNumber = 0
let Jankens = ["0", "gu", "choki", "pa"]
let Mojis = ["0", "グー", "チョキ", "パー"]
この2行を追加しました。文字列の配列を用意して、要素番号の0〜3に
それぞれの文字列を定数として代入しています。要素番号1〜3にグー、チョキ、パーの図や文字を表示させています。
YourAnswerNumberとMyAnswerNumber は相手とわたしのジャンケンを1〜3の整数をボタンを押すたびに乱数で発生させています。
表示の部分は次のとおりです。
Image(Jankens[YourAnswerNumber])
Text("相手 \(Mojis[YourAnswerNumber])")
これでグーの場合、チョキの場合、パーの場合とif文で分けなくても対応できます。
わたしの表示はYourAnswerNumberの部分をMyAnswerNumber に書き換えれば問題なく表示できました。
ここで迷ったのが、YourAnswerNumber やMyAnswerNumberは状態変数と呼ばれる@State var で宣言してあるので、JankensやMojisの宣言をどのようにしたら良いかということでした。
この状態変数の場合は値が変化するとViewを書き換えるということでした。
それから配列の方は定数であり値を書き換えることは基本的にないので、通常の配列宣言でパスしました。
配列に関してはあまり手応えなくすんなりといったので、拍子抜けした感じです。
次の本は、Xcode 14、iOS 16、Swift 5.7 に対応しています。