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

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

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

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

Swift

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

Q&A

解決済

1回答

435閲覧

swift if文の簡略化ができない

dandadan

総合スコア14

if

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

Swift

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

0グッド

0クリップ

投稿2022/02/04 01:52

swift

1if currentzoom >= 21 { 2 circleScale = 760 3 } else if currentzoom >= 20.8{ 4 circleScale = 760 - 76*1 5 } else if currentzoom >= 20.6{ 6 circleScale = 760 - 76*2 7 } else if currentzoom >= 20.4{ 8 circleScale = 760 - 76*3 9 } else if currentzoom >= 20.2{ 10 circleScale = 760 - 76*4 11 } else if currentzoom >= 20{ 12 circleScale = 380 13 } else if currentzoom >= 19.9{ 14 circleScale = 380 - 19*1 15 } else if currentzoom >= 19.8{ 16 circleScale = 380 - 19*2 17 } else if currentzoom >= 19.7{ 18 circleScale = 380 - 19*3 19 } else if currentzoom >= 19.6{ 20 circleScale = 380 - 19*4 21 } else if currentzoom >= 19.5{ 22 circleScale = 380 - 19*5 23 } else if currentzoom >= 19.4{ 24 circleScale = 380 - 19*6 25 } else if currentzoom >= 19.3{ 26 circleScale = 380 - 19*7 27 } else if currentzoom >= 19.2{ 28 circleScale = 380 - 19*8 29 } else if currentzoom >= 19.1{ 30 circleScale = 380 - 19*9 31 } else if currentzoom >= 19{ 32 circleScale = 380 - 19*10 33 } else if currentzoom >= 18.967{ 34 circleScale = 190 - 3.8*1 35 } else if currentzoom >= 18.934{ 36 circleScale = 190 - 3.8*2 37 } else if currentzoom >= 18.9{ 38 circleScale = 190 - 3.8*3 39 } else if currentzoom >= 18.867{ 40 circleScale = 190 - 3.8*4 41 } else if currentzoom >= 18.834{ 42 circleScale = 190 - 3.8*5 43 } else if currentzoom >= 18.8{ 44 circleScale = 190 - 3.8*6 45 } else if currentzoom >= 18.767{ 46 circleScale = 190 - 3.8*7 47 } else if currentzoom >= 18.734{ 48 circleScale = 190 - 3.8*8 49 } else if currentzoom >= 18.7{ 50 circleScale = 190 - 3.8*9 51 } else if currentzoom >= 18.667{ 52 circleScale = 190 - 3.8*10 53 } else if currentzoom >= 18.634{ 54 circleScale = 190 - 3.8*11 55 } else if currentzoom >= 18.6{ 56 circleScale = 190 - 3.8*12 57 } else if currentzoom >= 18.567{ 58 circleScale = 190 - 3.8*13 59 } else if currentzoom >= 18.534{ 60 circleScale = 190 - 3.8*14 61 } else if currentzoom >= 18.5{ 62 circleScale = 190 - 3.8*15 63 } else if currentzoom >= 18.467{ 64 circleScale = 190 - 3.8*16 65 } else if currentzoom >= 18.434{ 66 circleScale = 190 - 3.8*17 67 } else if currentzoom >= 18.4{ 68 circleScale = 190 - 3.8*18 69 } else if currentzoom >= 18.367{ 70 circleScale = 190 - 3.8*19 71 } else if currentzoom >= 18.334{ 72 circleScale = 190 - 3.8*20 73 } else if currentzoom >= 18.3{ 74 circleScale = 190 - 3.8*21 75 } else if currentzoom >= 18.267{ 76 circleScale = 190 - 3.8*22 77 } else if currentzoom >= 18.234{ 78 circleScale = 190 - 3.8*23 79 } else if currentzoom >= 18.2{ 80 circleScale = 190 - 3.8*24 81 } else if currentzoom >= 18.167{ 82 circleScale = 190 - 3.8*25 83 } else if currentzoom >= 18.134{ 84 circleScale = 190 - 3.8*26 85 } else if currentzoom >= 18.1{ 86 circleScale = 190 - 3.8*27 87 } else if currentzoom >= 18.067{ 88 circleScale = 190 - 3.8*28 89 } else if currentzoom >= 18.034{ 90 circleScale = 190 - 3.8*29 91 } else if currentzoom >= 18{ 92 circleScale = 76 93 } else if currentzoom >= 18 - 0.02*1{ 94 circleScale = 76 - 0.76*1 95 } else if currentzoom >= 18 - 0.02*2{ 96 circleScale = 76 - 0.76*2 97 } else if currentzoom >= 18 - 0.02*3{ 98 circleScale = 76 - 0.76*3 99 } else if currentzoom >= 18 - 0.02*4{ 100 circleScale = 76 - 0.76*4 101 } else if currentzoom >= 18 - 0.02*5{ 102 circleScale = 76 - 0.76*5 103 } else if currentzoom >= 18 - 0.02*6{ 104 circleScale = 76 - 0.76*6 105 } else if currentzoom >= 18 - 0.02*7{ 106 circleScale = 76 - 0.76*7 107 } else if currentzoom >= 18 - 0.02*8{ 108 circleScale = 76 - 0.76*8 109 } else if currentzoom >= 18 - 0.02*9{ 110 circleScale = 76 - 0.76*9 111 } else if currentzoom >= 18 - 0.02*10{ 112 circleScale = 76 - 0.76*10 113 } else if currentzoom >= 18 - 0.02*11{ 114 circleScale = 76 - 0.76*11 115 } else if currentzoom >= 18 - 0.02*12{ 116 circleScale = 76 - 0.76*12 117 } else if currentzoom >= 18 - 0.02*13{ 118 circleScale = 76 - 0.76*13 119 } else if currentzoom >= 18 - 0.02*14{ 120 circleScale = 76 - 0.76*14 121 } else if currentzoom >= 18 - 0.02*15{ 122 circleScale = 76 - 0.76*15 123 } else if currentzoom >= 18 - 0.02*16{ 124 circleScale = 76 - 0.76*16 125 } else if currentzoom >= 18 - 0.02*17{ 126 circleScale = 76 - 0.76*17 127 } else if currentzoom >= 18 - 0.02*18{ 128 circleScale = 76 - 0.76*18 129 } else if currentzoom >= 18 - 0.02*19{ 130 circleScale = 76 - 0.76*19 131 } else if currentzoom >= 18 - 0.02*20{ 132 circleScale = 76 - 0.76*20 133 } else if currentzoom >= 18 - 0.02*21{ 134 circleScale = 76 - 0.76*21 135 } else if currentzoom >= 18 - 0.02*22{ 136 circleScale = 76 - 0.76*22 137 } else if currentzoom >= 18 - 0.02*23{ 138 circleScale = 76 - 0.76*23 139 } else if currentzoom >= 18 - 0.02*24{ 140 circleScale = 76 - 0.76*24 141 } else if currentzoom >= 18 - 0.02*25{ 142 circleScale = 76 - 0.76*25 143 } else if currentzoom >= 18 - 0.02*26{ 144 circleScale = 76 - 0.76*26 145 } else if currentzoom >= 18 - 0.02*27{ 146 circleScale = 76 - 0.76*27 147 } else if currentzoom >= 18 - 0.02*28{ 148 circleScale = 76 - 0.76*28 149 } else if currentzoom >= 18 - 0.02*29{ 150 circleScale = 76 - 0.76*29 151 } else if currentzoom >= 18 - 0.02*30{ 152 circleScale = 76 - 0.76*30 153 } else if currentzoom >= 18 - 0.02*31{ 154 circleScale = 76 - 0.76*31 155 } else if currentzoom >= 18 - 0.02*32{ 156 circleScale = 76 - 0.76*32 157 } else if currentzoom >= 18 - 0.02*33{ 158 circleScale = 76 - 0.76*33 159 } else if currentzoom >= 18 - 0.02*34{ 160 circleScale = 76 - 0.76*34 161 } else if currentzoom >= 18 - 0.02*35{ 162 circleScale = 76 - 0.76*35 163 } else if currentzoom >= 18 - 0.02*36{ 164 circleScale = 76 - 0.76*36 165 } else if currentzoom >= 18 - 0.02*37{ 166 circleScale = 76 - 0.76*37 167 } else if currentzoom >= 18 - 0.02*38{ 168 circleScale = 76 - 0.76*38 169 } else if currentzoom >= 18 - 0.02*39{ 170 circleScale = 76 - 0.76*39 171 } else if currentzoom >= 18 - 0.02*40{ 172 circleScale = 76 - 0.76*40 173 } else if currentzoom >= 18 - 0.02*41{ 174 circleScale = 76 - 0.76*41 175 } else if currentzoom >= 18 - 0.02*42{ 176 circleScale = 76 - 0.76*42 177 } else if currentzoom >= 18 - 0.02*43{ 178 circleScale = 76 - 0.76*43 179 } else if currentzoom >= 18 - 0.02*44{ 180 circleScale = 76 - 0.76*44 181 } else if currentzoom >= 18 - 0.02*45{ 182 circleScale = 76 - 0.76*45 183 } else if currentzoom >= 18 - 0.02*46{ 184 circleScale = 76 - 0.76*46 185 } else if currentzoom >= 18 - 0.02*47{ 186 circleScale = 76 - 0.76*47 187 } else if currentzoom >= 18 - 0.02*48{ 188 circleScale = 76 - 0.76*48 189 } else if currentzoom >= 18 - 0.02*49{ 190 circleScale = 76 - 0.76*49 191 } else if currentzoom == 17{ 192 circleScale = 38 193 } else if currentzoom < 17 { 194 circleScale = 1 195 }

上記のようなif文を書きました
googlemapのzoomlevelが21~17の時の円の大きさを表現しています。
常に約40mの円になるように表現できたのですが、もっと効率の良い書き方はありませんか?

varなどは省略しています。

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

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

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

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

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

guest

回答1

0

ベストアンサー

まずは、数式に落とし込んでみましょう。
例えば、currentzoomが20〜21の間は、
currentScale = 760 - (21 - currentzoom) * 380
のような数式に近似できます。
こうすれば、17〜18, 18〜19, ...と、数個の場合分けで済むはずです。
さらに言えば、全体が2次関数で近似できれば、一つの数式で表せるかもしれません。

いろいろ試してみてください。

投稿2022/02/04 03:48

編集2022/02/04 03:49
AOKINAO

総合スコア268

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

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

dandadan

2022/02/04 04:47

めちゃくちゃコンパクトにできました! ありがとうございます! 柔軟な発想ができるように精進します。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問