質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.37%
if

if文とは様々なプログラミング言語で使用される制御構文の一種であり、条件によって処理の流れを制御します。

iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

配列

配列は、各データの要素(値または変数)が連続的に並べられたデータ構造です。各配列は添え字(INDEX)で識別されています。

Q&A

解決済

2回答

1377閲覧

swift、条件分岐で100パターン以上を作りたい

退会済みユーザー

退会済みユーザー

総合スコア0

if

if文とは様々なプログラミング言語で使用される制御構文の一種であり、条件によって処理の流れを制御します。

iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

配列

配列は、各データの要素(値または変数)が連続的に並べられたデータ構造です。各配列は添え字(INDEX)で識別されています。

0グッド

0クリップ

投稿2020/04/20 20:53

前提・実現したいこと

お世話になります。現在、iosアプリ開発のために、Swiftを学んでいます。
その過程で1つ1つ処理の違う、100パターン以上の条件分岐を作りたいと考えています。

テーブルビューで1から順に100以上の数字を並べ、その数字を使って、画面遷移先で簡単な計算を行うように実装したいです。
そこで下記のようにif文に配列をスライスしてみたのですが、エラーが出ました。
調べた結果、Swiftのif文で配列スライは使用できないと解釈しました。
何かできるだけシンプルに実装できる方法はありますでしょうか?

イメージ説明

該当のソースコード

Swift

1import UIKit 2 3 4let array = [Int](1...100) 5let num = 10 6 7if num == array[9...19] { 8 print("10~20です") 9}

試したこと

switch文に書き換え

補足情報(FW/ツールのバージョンなど)

xcode Version 11.4.1

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

エラーメッセージをよく読みましょう。

Binary operator '==' cannot be applie to operands of type 'int' and 'Array<Int>.Subsequence' (aka 'ArraySlice<Int>')

つまり、== 演算子は Int と ArraySlice<Int> の比較には使えない、と言ってます。Int と ArraySlice<Int> は型が違うので、同じ値を持つ事はあり得ないからです。

array[9...19] が num を含む、という条件なら、contains を使って以下のように書けます。

swift

1if array[9...19].contains(num) { 2 print("10~20です") 3}

投稿2020/04/20 21:07

hoshi-takanori

総合スコア7899

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2020/04/22 09:52

ありがとうございました!こちらを応用して、希望通りの処理ができました!
guest

0

100パターン以上の条件分岐

というのがどういったものであるかによって話は違ってきますが、範囲によって処理を変えるのであれば

swift

1 2array.forEach { num in 3 4 switch num { 5 case 0...10: print("0-10") 6 case 11...20: print("11-20") 7 .... 8 .... 9 default: print("out of range") 10 } 11}

のようにswitchで分岐するのが分かりやすいですかね。

また、

画面遷移先で簡単な計算を行う

とのことなので計算内容によっては計算式を工夫すれば分岐が必要なくなる可能性もありますね。

投稿2020/04/21 02:25

MasakiHori

総合スコア3391

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2020/04/22 09:51

ありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.37%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問