【Swift】複合代入演算子

複合代入演算子とは、前の記事で紹介した算術演算子と代入を組み合わせた演算子のことを言います。
複合代入演算子を使うとコードを簡潔にできたり、読みやすくなります。
インクリメントやデクリメントなんかにも使われてるのをよく見かけます。
まず複合代入演算子の前に算術演算子について理解しておきましょう。

前回は for文と範囲演算子 について書きました。

今回は 複合代入演算子 について書いていこうと思います。

複合代入演算子とは

複合代入演算子とは、前の記事で紹介した算術演算子と代入を組み合わせた演算子のことを言います。
複合代入演算子を使うとコードを簡潔にできたり、読みやすくなります。
インクリメントやデクリメントなんかにも使われてるのをよく見かけます。
まず複合代入演算子の前に算術演算子について理解しておきましょう。

算術演算子 についてはこちらで紹介しています。

では複合代入演算子の種類を見ていきましょう。

複合代入演算子の種類

演算子意味
+=足し算(加算)と代入
-=引き算(減算)と代入
*=掛け算(乗算)と代入
/=割り算(除算)と代入
%=割り算の余り(剰余)と代入

演算例

複合代入演算子を使った演算例と、使わなかった場合の例

+= (加算と代入)

// +=
var a = 1
a += 1
print(a) //2

//複合代入演算子を使わなかった場合
a = a + 1

-= (減算と代入)

// -=
var b = 2
b -= 1
print(b) //1

//複合代入演算子を使わなかった場合
b = b - 1

*= (乗算と代入)

// *=
var c = 2
c *= 2
print(c) //4

//複合代入演算子を使わなかった場合
c = c * 2

/= (除算と代入)

// /=
var d = 4
d /= 2
print(d) //2

//複合代入演算子を使わなかった場合
d = d / 2

%= (剰余と代入)

// %=
var e = 5
e %= 2
print(e) //1

//複合代入演算子を使わなかった場合
e = e % 2
+=コードimg

ちょっとですが簡潔になり可読性も良くなったと思います。
以上 複合代入演算子 でした。

次回は ネスト について書いていこうと思います。

実行環境

version
Xcode 14.2 (14C18)
Swift 5.2.4

公式ドキュメント

https://docs.swift.org/swift-book/documentation/the-swift-programming-language/

【Swift】for文と範囲演算子

for文とは繰り返し構文のことで、for-in文とも言います。
指定した回数分の処理を繰り返す事ができる構文です。同じ処理を複数回ループさせたい時に使います。
範囲演算子とはfor文と一緒に使うことが多い演算子で、開始値から終了値までの範囲を決めるときに使います。
まずはよく使う範囲演算子からみていきましょう。

前回は if文 と if-else文 について記事を書きました。

今回は for文 と範囲演算子について書いていこうと思います。

for文と範囲演算子とは

for文 とは繰り返し構文のことで、for-in文 とも言います。
指定した回数分の処理を繰り返す事ができる構文です。同じ処理を複数回ループさせたい時に使います。
範囲演算子とは for文 と一緒に使うことが多い演算子で、開始値から終了値までの範囲を決めるときに使います。
まずはよく使う範囲演算子からみていきましょう。

範囲演算子の種類

範囲演算子意味
終了値を含む
..<終了値を含まない

この 2 種類がよく使われる範囲演算子だと思います。

for文の書式

for 定数名 in 整数A 範囲演算子 整数B {
 繰り返したい処理
 }

for文 は頭に for キーワードを付けます。
定数名は何でもいいですが、基本 ij とすることが多いと思います。
整数 A より、整数 B の方が大きい整数でなければエラーになります。

for文 の書き方

//for文の書き方例1
for i in 1 ... 10 {
    print(i)
}

この例は print( i ) を 10 回ループさせる例です。
範囲演算子の は、終了値を含む演算子なので 1 ~ 10 回目までループします。

※コードの流れ
i には最初 1 が代入される

print( i ) を実行

for文 の閉じかっこ } まで処理が来たら一度破棄される

戻って次は i2 が代入される

また print( i ) を実行、、、
という流れで回数分コードが読まれていきます。

//for文の書き方例2
for i in 1 ..< 10 {
    print(i)
}

この例は上の例 1 と似ていますが、範囲演算子が から ..< に変わっています。
この ..<終了値を含まない演算子なので、ループする回数は 1 ~ 9 回目までとなります。

for-inコードimg

Int型 の変数や定数であれば、範囲の所を a ba ..< b のような書き方も出来ます。

var a = 1
var b = 10

for i in a ... b {
    print("\(i)回目")
}

for i in a ..< b {
    print("\(i)回目")
}
for-inコードimg2

インクリメントとデクリメント

インクリメントとは、何かの数字に 1 足すことをインクリメントと言います。
デクリメントはその逆で、何かの数字から 1 引くことをデクリメントと言います。

例えば 1 を 10 回インクリメントしたい時、for文 を使わず書くとこうなります。

var a = 0
a = a + 1
a = a + 1
a = a + 1
a = a + 1
a = a + 1
a = a + 1
a = a + 1
a = a + 1
a = a + 1
a = a + 1
print(a) //10

1 行 1 行インクリメントしていかないと 10 回足せません。
これを for文 で書きます。

var a = 0

for _ in 1 ... 10 {
    a = a + 1
}
print(a) //10

結果は同じで、コードが短くなりました。可読性も向上したと思います。

for文 の定数名の所がアンダーバー _ になっていますが、これは for文 の中の処理で使わない場合に、アンダーバー _ として省略になっています。
以上 for文 と 範囲演算子 についてでした。

次回は 複合代入演算子 について書いていこうと思います。

実行環境

version
Xcode 14.2 (14C18)
Swift 5.2.4

公式ドキュメント

https://docs.swift.org/swift-book/documentation/the-swift-programming-language/