【Swift】三項演算子

三項演算子とは、オペランド(被演算子)を 3 つ必要とする演算子で、Bool値 ( true , false ) によって代入する値を分岐できる演算子です。
簡単な分岐であれば、1 行のコードで if文 と同じ処理をする事ができます。
if文 を使って分岐するほどではない時に使います。

前回は 構造体 について書きました。

今回は 三項演算子 について書いていこうと思います。

三項演算子とは

三項演算子とは、オペランド(被演算子)を 3 つ必要とする演算子で、Bool値 ( true , false ) によって代入する値を分岐できる演算子です。
簡単な分岐であれば、1 行のコードで if文 と同じ処理をする事ができます。
if文 を使って分岐するほどではない時に使います。

if文 についてはこちらの記事で紹介しています。

三項演算子の書式

条件式 ? trueだった場合の値 : falseだった場合の値

条件式 の後に ? マークを書きます。
その後に、
true だった場合の値 : false だった場合の値
を書きます。

条件式の結果が
true であれば左辺の値
false であれば右辺の値
が代入されます。

三項演算子を使った例

整数の大きさによって処理を分岐する例です。

var hp = 60
var strategy: String

//三項演算子の例
strategy = hp <= 50 ? "いのちだいじに" : "ガンガンいこうぜ"
print(strategy) //ガンガンいこうぜ

変数 hp には 60 が代入されています。
条件式は hp の値が 50 以下( 50 も含まれる)であれば true 、それ以外であれば false となります。
上の例では、hp の値が 50 以上なので false となり、右辺の値が 変数 strategy に代入されます。

比較演算子 についてはこちらの記事で紹介しています。

if文 で書いた場合

上のコードを if文 で書いた場合の例

var hp = 60
var strategy: String

//三項演算子の例
strategy = hp <= 50 ? "いのちだいじに" : "ガンガンいこうぜ"
print(strategy) //ガンガンいこうぜ

//上のコードをif文で書いた場合
if hp <= 50 {
    strategy = "いのちだいじに"
} else {
    strategy = "ガンガンいこうぜ"
}
print(strategy) //ガンガンいこうぜ

三項演算子を使った分岐は print関数 を抜かすと 1 行で書けるのに対し、同じ処理を if文 で書くと 5 行になってしまいます。
このぐらいの単純な分岐であれば三項演算子を使った方が可読性が高いかもしれません。

分岐を増やしたい場合

分岐を増やしたい場合の書式

条件式a ? trueだった場合の値a : 条件式b ? trueだった場合の値b : falseだった場合の値

条件式 a の後に ? true だった場合の値 a と書きます。
コロン : を書いて 条件式 b を書きます。
その後に ? trueだった場合の値 b : falseだった場合の値
を書きます。

コードが読まれていく順序

最初の 条件式 atrue であれば true だった場合の値 a が代入される。

false であれば次の 条件式 b に進む

条件式 btrue であれば true だった場合の値 b が代入される

false であれば false だった場合の値 が代入される

という流れになります。

三項演算子を使って分岐を増やしたい場合の例

var hp = 0
var strategy: String

//分岐を増やしたい場合の例
strategy = hp == 0 ? "ザオラル!" : hp <= 50 ? "いのちだいじに" : "ガンガンいこうぜ"
print(strategy) //ザオラル!

条件に 変数hp の値が 0 だった場合の処理を追加しました。

if文 で書いた場合

上のコードを if文 で書いた場合の例

var hp = 0
var strategy: String

//分岐を増やしたい場合の例
strategy = hp == 0 ? "ザオラル!" : hp <= 50 ? "いのちだいじに" : "ガンガンいこうぜ"
print(strategy) //ザオラル!

//上のコードをif文で書いた場合の例
if hp == 0 {
    strategy = "ザオラル!"
} else if hp <= 50 {
    strategy = "いのちだいじに"
} else {
    strategy = "ガンガンいこうぜ"
}
print(strategy) //ザオラル!
ternary-operatorコードimg

2 択の単純な分岐であれば三項演算子を使った分岐の方が短いし楽ですが、分岐が増えてくると 1 行とはいえ見づらいと思います。
分岐が増えるかもしれない場合は最初から if文switch文 を使った方がいいかもしれません。
以上 三項演算子 についてでした。

次回は タプル について書いていこうと思います。

実行環境

version
Xcode 14.2 (14C18)
Swift 5.2.4

公式ドキュメント

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

【Swift】論理演算子

前回の記事で真理値型と比較演算子について書きましたが、論理演算子も条件分岐をして処理を分ける時などによく使われる演算子で、比較演算子とセットで使うこともあります。比較した値はBool値で返ってきます。
まずは論理演算子の種類を見ていきましょう。

前回は 真理値型と比較演算子 について記事を書きました。

今回は 論理演算子 について書いていこうと思います。

論理演算子とは

前回の記事で真理値型と比較演算子について書きましたが、論理演算子も条件分岐をして処理を分ける時などによく使われる演算子で、比較演算子とセットで使うこともあります。比較した値は Bool値 で返ってきます。Bool型 についてはこちらの記事で紹介しています。

まずは論理演算子の種類を見ていきましょう

論理演算子の種類

各論理演算子の true になる場合と false になる場合をまとめてみました。

|| は shiftキー を押しながら ¥マーク 2 回。(Mac)
論理演算値truefalse
&&true && truetrue && false
false && true
false && false
||true || true
true || false
false || true
false || false
!! false! true

論理演算子を使った例

&& (and)

&& は、〜かつ〜 という意味で、論理積とも言います。左辺と右辺の値がどっちも true であれば true、どちらかが false、または両方 false であれば false になる演算子です。

//定数a,b,cにそれぞれtrueかfalseを代入
let a = true
let b = false
let c = true
var d:Bool

//&&
d = a && b //false
d = a && c //true

&&
左辺と右辺がどっちも true の場合のみ true になる演算子なので a && bfalse で、a && ctrue という結果になります。

|| (or)

|| は、〜または〜 という意味で、論理和とも言います。左辺と右辺どちらかが true であれば true、両方 false の場合のみ false になる演算子です。

//定数a,b,cにそれぞれtrueかfalseを代入
let a = true
let b = false
let c = true
var d:Bool

//||
d = a || b
print(d) //true
d = a || c
print(d) //true
d = b || b
print(d) //false

||
左辺か右辺の値がどちらかでも true であれば true になる演算子なので、b || bfalse、それ以外は true という結果になります。

! (not)

! は、〜でない という意味で、否定とも言います。Bool値の前に ! を付けることで、true を false に、false を true に変える事ができる演算子です。

//定数a,b,cにそれぞれtrueかfalseを代入
let a = true
let b = false
let c = true
var d:Bool

//!
d = !a
print(d) //false
d = !b
print(d) //true

!
a に入っている値は true ですが、! a とすると false に変わっています。

logical-operatorコードimg

以上 論理演算子 についてでした。
結構よく使うので押さえておきたいポイントだと思います。

次回は if文 について書いていこうと思います。

実行環境

version
Xcode 14.2 (14C18)
Swift 5.2.4

公式ドキュメント

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

【Swift】真理値型と比較演算子

前回は文字列型と文字列の型変換について記事を書きました。今回は真理値型と比較演算子について書いていこうと思います。
真理値型は真偽値型やBool型とも言われていて、真を表すtrueか偽を表すfalseかのどちらかの値をとる事が出来る型です。

前回は 文字列型と文字列の型変換 について記事を書きました。

今回は 真理値型と比較演算子 について書いていこうと思います。

真理値型とは

真理値型は、真偽値型や Bool型 とも言われていてを表す true か、を表す false かのどちらかの値をとる事が出来る型です。
プログラムの中で、ある条件や命題によって分岐して処理を分けたい時などに欠かせない型です。比較演算子と組み合わせて使うことで、例えばボタンの on/off 切り替えだったり、この条件であればこの処理、この条件でなければ別の処理、みたいな使い方も出来ます。まずは比較演算子の種類を見ていきましょう。

比較演算子の種類

a の値と b の値を比較した時の例

比較演算子truefalse
>a > ba が b より大きいa が b より小さい
<a < ba が b より小さいa が b より大きい
>=a >= ba が b 以上a が b 以下
<=a <= ba が b 以下a が b 以上
==a == ba が b と等しいa が b と等しくない
!=a != ba が b と等しくないa が b と等しい

上記の条件によって truefalse の値が返ってきます。

Bool型の宣言例と比較演算子を使った例

Bool型 の宣言と比較演算子を使って比較してみます。

> (大なり)

//Bool型の宣言例
var trueOrFalse:Bool
print(type(of: trueOrFalse)) //Bool

var a = 1
var b = 2

// >
trueOrFalse = a > b
print(trueOrFalse) //false

a > b
ab より大きければ true、ab より小さければ false になります。この場合は ab より小さいので結果は false になります。

< (小なり)

var trueOrFalse:Bool
print(type(of: trueOrFalse)) //Bool

var a = 1
var b = 2

// <
trueOrFalse = a < b
print(trueOrFalse) //true

a < b
ab より小さければ true、ab より大きければ false になります。この場合は ab より小さいので結果は true になります。

>= (大なりイコール)

var trueOrFalse:Bool
print(type(of: trueOrFalse)) //Bool

var a = 1
var b = 2

// >=
trueOrFalse = a >= b
print(trueOrFalse) //false

a >= b
ab 以上だったら true、ab 以下だったら false になります。この場合は ab 以下なので結果は false になります。

<= (小なりイコール)

var trueOrFalse:Bool
print(type(of: trueOrFalse)) //Bool

var a = 1
var b = 2

// <=
trueOrFalse = a <= b
print(trueOrFalse) //true

a <= b
ab 以下だったら true、ab 以上だったら false になります。この場合は ab 以下なので結果は true になります。

== (イコール)

var trueOrFalse:Bool
print(type(of: trueOrFalse)) //Bool

var a = 1
var b = 2

// ==
trueOrFalse = a == b
print(trueOrFalse) //false

a == b
ab と等しかったら true、ab と等しくなかったら false になります。この場合は ab と等しくないので結果は false になります。

!= (ノットイコール)

var trueOrFalse:Bool
print(type(of: trueOrFalse)) //Bool

var a = 1
var b = 2

// !=
trueOrFalse = a != b
print(trueOrFalse) //true

a != b
ab と等しくなかったら true、ab と等しかったら false になります。この場合は ab と等しくないので結果は true になります。

Boolコードimg

以上の 6 種類がよく使われる 比較演算子 かと思います。

次回は 論理演算子 について書いていこうと思います。

実行環境

version
Xcode 14.2 (14C18)
Swift 5.2.4

公式ドキュメント

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

【Swift】データ型

データ型とは、Swiftに限らずプログラムで使う全てのデータには型というものがあり、変数や定数などを宣言する時にそのデータはどの型に分類されるのかを宣言するためのものです。

前回は 変数・定数 について書きました。

今回は データ型 について書いていこうと思います。

データ型とは

データ型とは、Swift に限らずプログラムで使う全てのデータには『型』というものがあり、変数や定数などを宣言する時にそのデータはどの型に分類されるのかを宣言するためのものです。今回はよく使う代表的な型をいくつか書いていきたいと思います。

データ型の種類

型名和訳
String文字列型var a:String = “hoge”
Int整数型var a:Int = 1
Float
Double
浮動小数点型var a:Float = 3.14
var a:Double = 3.14
Bool真偽値型var a:Bool = true

細かく分類すればもっとありますが、よく使う代表的な型はこのあたりかなと思います。
Int Float Double は、数値型とも言われます。

型推論とtype(of:)関数

型推論とは

型推論とは型を明示しないで宣言した場合、入れた値によって型が予測されて自動的に決められる機能です。前回の記事、変数・定数で書いている変数や定数はこの型推論によって自動的に型が決められています。

type(of:)関数 とは

type(of:)関数 の引数に変数や定数などを入れて実行すると、何型かを返してくれる関数です。

型を明示した宣言例と型推論を用いた宣言例

変数、定数名の後ろにコロン : を入力してから型名を入力して、その型に合った値を代入します。

変数、定数名:型名 = 値

//型推論
変数、定数名 = 値
print(type(of:変数や定数))

print関数 の引数に type(of: 変数名や定数名 ) とすると Xcode のコンソールに何型か出力されるので、調べたい時などによく使ってます。

String型

var a:String = "hoge" //文字列

//型推論
var a = "hoge"
print(type(of: a)) //String型

※ 文字列は、ダブルクォーテーション で文字列を括ります。

Int型

var b:Int = 1 //整数

//型推論
var b = 1
print(type(of: b)) //Int型

Float型 Double型

var c:Double = 3.14 //浮動小数点
print(type(of: c)) //Double型

//型推論
//少数の型推論はデフォルトでDouble型に推論するので、Float型にしたい場合は明示が必要.
var d = 3.14 
print(type(of: d)) //Double型

var e:Float = 3.14 //Float型は明示しないとDouble型になる。
print(type(of: e)) //Float型

FloatDouble はどちらも浮動小数点型ではあるものの、桁の精度が違います。
Float6 桁Double15 桁の精度ですが基本的には Float で問題ないかと思います。桁が多くて計算ズレる!みたいな時に Double に代えればいいです。

Bool型

//Bool型はtrueかfalseの2種類
var f:Bool = true //真偽値

//型推論
var g = true //Bool型
var h = false //Bool型

Bool型 は on/off の切り替えだったり、条件分岐する時などによく使われます。

以上 データ型 についてでした。

次回は 数値型 の演算について書いていこうと思います。

実行環境

version
Xcode 14.2 (14C18)
Swift 5.2.4

公式ドキュメント

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