【Swift】 値を表現する基本的な4つの型について

# はじめに

どうも、プログラミング未経験で学習中の**はるさん**です。
この記事ではSwiftにおける値を表現する型について説明していきます。
 Swiftには様々な型が用意されいていますが、今回はその中でも基本中の
 基本である４つの型を説明していきます。

# 1. 真理値を表すBool型

## 1-1. Bool型の宣言と型推論


まず初めに真理値を表すBool型（ブール型）です。
真理値とはその値が真であるか偽であるかを表す型です。
真であれば`true`を、偽であれば`false`を返します。

Bool型の型宣言は　*定数名(変数名）: Bool = trueまたはfalse*と記述します。
```swift
// テレビの電源は入っている
var isTvPower: Bool = true

// パソコンの電源は入っていない
let isPcPower: Bool = false
```

また、型宣言を省略することもできます。省略した形は以下の記述です。
```swift
// テレビの電源は入っている
var isTvPower = true

// パソコンの電源は入っていない
let isPcPower = false
```

上記のように、`:`(コロン）に続けて型名を記述しなくても、
SwiftがBool型である「true」等が 代入されていることを見て、
「あ、これは変数`isTvPwoer`はBool型だね」と推測してくれています。 
このような記述方法をSwiftでは**「型推論**と読んでいます。

## 1-2. ３つの論理演算ー否定、論理積、論理和

論理演算とは真理値に対する演算で、その方法は３つ用意されています。

### 否定

否定とは、真理値を**逆さま**にする論理演算です。例は以下の通りです。
```swift
// 電源は入っている
var isPower = true

// パソコンの電源は入っていない
var isPcPower = !isPower
```

上記の例でいくと最初に変数電源は`true`と宣言しましたが、２行目で
`!`を`isPower`の前に つけることで逆の意味を持たせています。

### 論理積

論理積とは、与えられた真理値を照らし合わせて、**すべて**が真であれば真となる演算です。
```swift
let apple = false && false //false

let orange = false && true //false

let banana = true && false //false

let grape = true && true //true
```

上記の例の様に真理値と真理値の間いに`&&`（アンドを２つ）と記述します。 結果、左辺と右辺が
`true`となる定数`grape`だけが`ture`を返しています。

### 論理和

論理和とは与えられた真理値の**いずれか**が真であれば真となる演算です。
```swift
let apple = false || false //false

let orange = false || true //true

let banana = true || false //true

let grape = true || true //true
```

上記の例の様に真理値と真理値の間いに`||`(パイプラインを２つ）と記述します。
 結果、左辺と右辺の両方が`false`となる定数`apple `だけが`false`を返しています。

#  2. 整数を表すInt型

## 2-1. Int型の宣言と型推論

次に整数を表すInt型(イント型）です。この型は厳密にいうと、
数値型の一つで、 後に説明するDobule型（ダブル型）と同族です。
Int型は*整数*ですので、`１`や`１０`といった整数の値を表現します。


 *(注釈)*　*整数型にはInt8型、Int16型、Int32型、Int64型がありますが、今回は割愛します。*

Int型の型宣言は　*定数名(変数名） : Int = Int型の値*と記述します。
```swift
var a: Int = 1

let b: Int = 10
```

また、型宣言を省略することもできます。省略した形は以下の記述です。
```swift
var a = 1

let b = 10
```

## 2-2. 計算を行う算術演算子
整数型の値を使って値を操作することができます。 まずは、計算を行うために使用する
算術演算子を見ていきましょう。

算術演算子とは皆さんもお馴染みの足し算や掛け算などの**四則演算に使う記号**と、
 割り算をして出た結果の余りの数である剰余算に使う**剰余演算に使う記号**のことです。
例は以下の通りです。 
```swift
// 加算（記号：プラス）
1 + 1  //結果は２

// 源算（記号：マイナス）
3 - 2  // 結果は１

// 乗算（記号：アスタリスク）
5 * 7  // 結果は３５

// 徐算（記号：スラッシュ)
10 / 2  //結果は５

// 剰余（記号：パーセント）
7 % 2 // 結果は１
```

また、Int型の変数に対して上記の算術演算子と代入演算子イコール`=`を組み合わせた
**複合代入演算子**というものがあります。例は以下のとおりです。

```swift
// 加算（記号：プラス）
var a = 1
a += 1  //結果は２

// 源算（記号：マイナス）
var b = 3
b -= 2  // 結果は-１

// 乗算（記号：アスタリスク）
var c = 5
c *= 7  // 結果は３５

// 徐算（記号：スラッシュ)
var d = 10
d /= 2  //結果は５

// 剰余（記号：パーセント）
var e = 7
e %= 2 // 結果は１

```

## 2-3. 比較を行う比較演算子
数値どうしの大小関係を比較する比較演算子です。 比較演算子を挟んで左辺と上辺を比較して、
主に真理値で結果を表します。

比較演算子は以下の６つがあります。

`==`右辺と左辺が一致する
`!=`右辺と左辺が一致しない

```swift
var a = 100 == 100 //true
var b = 200 == 100 //false

var a = 100 != 100 //false
var b = 200 != 100 //true
```
 
`>`左辺が右辺より大きい
`>=`左辺が右辺以上

```swift
var a = 100 > 100 //fals
var b = 200 > 100 //true

var a = 100 >= 100 //true
var b = 200 >= 100 //true
```


 `<`右辺が左辺より大きい
 `<=`右辺が左辺以上

```swift
var a = 100 < 100 //false
var b = 200 < 100 //false

var a = 100 <= 100 //true
var b = 200 <= 100 //false
```

# 3 浮動小数点を表すDouble型

## 3-1. Double型の宣言と型推論

次に浮動小数点を表すDouble型(ダブル型）です。この型も数値型の一つで、 
先に説明したInt型（Int型）と同じく数値を値として表す型です。
Double型は*浮動小数点型*ですので、`0.1`や`0.01`といった小数点のつく値を表現します。

 *(注釈） もう一つの浮動小数点型としてFloat型（フロート型）がありますが、*
*今回は説明を割愛します。*

Int型の型宣言は　*定数名(変数名） : Double = Daubile型の値*と記述します。
```swift
var a: Double = 0.1

let b: Double = 0.01
```

また、型宣言を省略することもできます。省略した形は以下の記述です。
```swift
var a = 0.1

let b = 0.01
```

## 3-2. 算術演算、比較演算と注意点

Double型も数値型としてInt型で述べた算術演算（足し算や掛算）、比較演算（==や＜＝など）を
行うことができます。
```swift
var a = 0.1 + 0.2 // 結果は0.3
let b = 0.01 * 0.5  // 結果は0.005

var a = 0.1 == 0.1 // 結果はtrue
var b = 0.01 <= 0.05 // 結果はtrue
```

ここで一つ注意点があります。Swiftでは同じ数値型であっても
**Int型とDouble型での演算処理ができない ことになっています。**
これを実行するとコンパイルヘラーの表示が出て、プログラムが実行でき な仕様になっています。

```swift
var a = 1
var b = 0.1

var c = a + b //コンパイルエラー
a == b //　コンパイルエラー
```

dauble型に合わせて宣言することで回避はできます。
```swift
var a = 1.0
var b = 0.1

var c = a + b // 結果は1.1
a == b //　結果はfals
```

# 4. 文字列を表すString型

## 4-1. String型の宣言と型推論
最後に文字列を表すString型（ストリング型）です。アルファベットや日本語を扱うことができます。

String型の型宣言は 定数名(変数名）:String = “値”と記述します。
 (`“`ダブルクオートまたはダブルクォーテーション)
```swift
var a: String = "はるさんです。"

let b: String = "Harusan"
```

また、型宣言を省略することもできます。省略した形は以下の記述です。
```swift
var a = "はるさんです。"

let b = "Harusan"
```

## 4-2. String型の結合と値の挿入

String型には値同士を結合することもできます。
```swift
var a: String = "はるさんです。"
let b: String = "Harusan"

var c = a + b
print(c) //出力結果→ はるさんです。Harusan

```

また、`\()`を用いて文字列の中に値を挿入することも可能です。
```swift
var a = "１月１日"
let b = "今日の日付は\(a)です。"
print(b) // 出力結果→ 今日の日付は１月１日です。

```

# 終わりに
今回は値を表現する基本的な型を４つ説明しました。
今回紹介した内容以外にも細かな使用がありますので気になるかたは調べてみてください。 

自分もまだまだ勉強中なので、間違いがありましたらご指摘して頂けるとありがたいです。
この記事がプログラミング初学者の方にとってお役に立てれば幸いです。

# 参考著書 
<増補改訂第３版>  SWIFT実践入門