データ型 - Ryuya-777/note GitHub Wiki

データ型の種類

型の確認方法

型を確認するには下記記述で確認できる。

let a = 123
let b = "金井"

type(of: a) //Int.Type
type(of: b) //String.Type

Any型

データ型の1種でどんな値でも代入できる。

var ages: [Any] =  []
ages.append(24)
ages.append("三十")
ages.append(22.5)

for any in ages {
    print("彼は\(any)歳です。")
}

【Any型の使い方】 とりあえずAny型の配列に入れといて後で振り分けとか。

let ages: [Any] = [24, "三十", 22.5, 35, 40, "45", 50.5, 60]
var numbers = [Int]()

for any in ages {
    if any is Int {
        numbers.append(any as! Int)
    }
}
numbers // [24, 35, 40, 60]
// Int型の配列が完成した。

【注意事項】

let array = [1,2,3,4,5,6]

var newArray = [] as [Int] //配列はデフォでAny型。as [Int]でダウンキャストする必要がある。
array.forEach({ element in newArray.append(element) })

newArray //[1, 2, 3, 4, 5, 6]

参考記事

タプル型

配列や辞書と同じようにいくつか値の値をまとめる型 「データ型の違う複数の値を一時的に保存しておきたい」という時に便利

Any型とかAnyObject型だと、毎回型変換(キャスト)しないと演算ができないが、 タプル型を使うと各値を使用するときとかにいちいち型変換をしなくてもそのままの形で演算できるので便利。

let test = ("金井", 100, 0.5) // 『タプル』を定義
 
print(test) // ("金井", 100, 0.5)

配列や辞書も入れられる。

let test = (
    [0, 1, 2],
    ["金井": "080-xxxx-yyyy"]
)
 
print(test) // ([0, 1, 2], ["金井": "080-xxxx-yyyy"])

** 【タプルへのアクセス方法】**

let test = ("金井", 100, 0.5) // タプルを定義
 
print(test.0) // 金井

タプルに中に配列がある場合

let test = ("金井", [0, 1, 2])
 
print(test.1[0]) // 「0」が出力される

【ラベルでのアクセス方法】 『タプル名.ラベル名』とすればその値にアクセスすることができる

let t = (name: "金井", tellNum: "080-xxxx-yyyy")
 
print(t.name) // 『"金井"』と出力されます。

ラベルをつけたタプルでも、番号でアクセスできる。

let t = (name: "金井", tellNum: "080-xxxx-yyyy")
 
// 以下はどちらでもOKです。
print(t.0) // 『"金井"』と出力されます。
print(t.name) // 『"金井"』と出力されます。

『タプル』の『ラベル』はオプションというイメージ、『ラベル』を付けた『タプル』は番号でなくともアクセスできる。

【タプルの応用】 まとめて定義できる

let (n, s) = (1, "金井")
 
print(n) // 『1』が出力されます。
print(s) // 『金井』が出力されます。

下記の使い方が結構便利

func test(n: Int, s: String) -> (Int, String){
    return (n, s)
}
 
let (num, str) = test(n: 10, s: "金井") // 戻り値をそれぞれの定数で受け止めます。
 
print(num) // 『10』と出力されます。
print(str) // 『金井』と出力されます。

参考記事