Swiftの変数・定数とデータ型を学ぶ
こんにちは、Yukiです。
アプリ開発未経験の私がひょんなことからiOSアプリを作成することになりました。
なぜiOSアプリを作ることになったのかは最初の記事で
今回は作成手順のSwiftについて学ぶ章の変数・定数とデータ型(String型、整数型、浮動小数点数型、Bool型、Optional型)です。
Swiftを学ぶ章の目次
- printとコメントなどの基本的な機能
- 変数・定数とデータ型(String型、整数型、浮動小数点数型、Bool型、Optional型)
- データ型(Array、dict、set)
- 関数(func)とエラー処理
- クラス(class)と構造体
- 各種構文(forループやif文)
定数と変数の宣言
定数、変数を使用する際は最初に宣言する必要があります。
基本の宣言方法
例えばログインを試せる回数を10回、変数に現在試した回数を0回をmaximumNumberOfLoginAttempts、currentLoginAttemptに代入してみます。
// 定数
let maximumNumberOfLoginAttempts = 10
maximumNumberOfLoginAttempts = 11 // NG 値を変更できない// 変数
var currentLoginAttempt = 0
currentLoginAttempt = 1 // OK 値を変更できる
ログインを試せる回数は変わらないので定数に、現在試した回数は変わるので変数に代入しています。
定数は一度値が入力されると変えることができませんが、変数は何度でも変更可能です。
maximumNumberOfLoginAttempts = 15
print(maximumNumberOfLoginAttempts) // エラーcurrentLoginAttempt = 1
print(currentLoginAttempt) // 1を出力
宣言時に代入する型を指定する場合
名前の後ろにコロンをつけて型名を指定します。
var welcomeMessage: String = "Hello"
let welcomeMessage: String = "Hello"
実際に代入する時はvarを外して
welcomeMessage = "Hello"
複数宣言
カンマ区切りで宣言することが可能です。
var x = 0.0, y = 0.0, z = 0.0
名前にはUnicodeを含むほぼ全ての文字が使える!?
変数や定数の名前には日本語でも中国語でも絵文字でさえ使用できるそうです。
let π = 3.14159
let 你好 = "你好世界"
let 🐶🐮 = "dogcow"
絵文字は可愛い笑
Swiftのデータ型について
String型
文字列で、””で囲んで使用します。
var cat = "猫"
2つ以上の文字列は+で結合できます。
var catdog = "猫" + "と" + "犬"
整数型
整数は符号付き整数(負の数、ゼロ、正の数)と符号なし整数(ゼロ、正の数)に分類できます。
符号付き整数
符号付き整数の型は全部でInt, Int8, Int16, Int32,Int64の5つあります。
それぞれの整数の範囲
print("\(Int.min) ~ \(Int.max)")
-9223372036854775808 ~ 9223372036854775807print("\(Int8.min) ~ \(Int8.max)")
-128 ~ 127print("\(Int16.min) ~ \(Int16.max)")
-32768 ~ 32767print("\(Int32.min) ~ \(Int32.max)")
-2147483648 ~ 2147483647print("\(Int64.min) ~ \(Int64.max)")
-9223372036854775808 ~ 9223372036854775807
符号なし整数
UInt, UInt8, UInt16,UInt 32, UInt64の5つの型が使えます。
print("\(UInt.min) ~ \(UInt.max)")
0 ~ 18446744073709551615print("\(UInt8.min) ~ \(UInt8.max)")
0 ~ 255print("\(UInt16.min) ~ \(UInt16.max)")
0 ~ 65535print("\(UInt32.min) ~ \(UInt32.max)")
0 ~ 4294967295print("\(UInt64.min) ~ \(UInt64.max)")
0 ~ 18446744073709551615
もしInt64やUInt64を使っても32ビットの環境では32ビットまでしか使用することができません。
浮動小数点数型
小数点を使う場合は浮動小数点数を使います。
浮動小数点数には32ビットのFloat型、64ビットのDouble型の二種類の型があります。
整数より大きな範囲の数字を扱うことができますが、計算速度は数値型の中で一番遅くなります。
Type safetyとType Inference
SwiftはType safetyという特徴をもつ言語だそう。
コンパイルする時に型のチェックをしてくれるので、誤ってString型にInt型の値を代入してしまった!といった場合はエラーを返してくれます。
さらに変数や定数を宣言する際に型を指定しなくても自動で判別してくれます。
var cat = "cat" // String型
var review = 0.5 // 小数点はDouble型
var add = 0.6 + 1 // Double型+Int型はDouble型
整数と浮動小数点数の変換
違う型同士の演算はできないので、型を変更して合わせてあげる必要があります。
型の変更は型名に丸括弧に入れるで変更できます。
let three = 3 // Int
let pointOneFourOneFiveNine = 0.14159 // Double
print(three + pointOneFourOneFiveNine) // エラー
型の変更は型名に丸括弧に入れるで変更できます。
IntをDoubleに変更した場合
print(Double(three) + pointOneFourOneFiveNine)) // 3.14159
DoubleをIntに変更した場合
print(three + Int(pointOneFourOneFiveNine)) // 3
Bool型
真偽の2つの状態を表します。
let orangesAreOrange = true
let turnipsAreDelicious = false
nilとOptional型
nilとは「何もない」ことを表し、空白や0とはまた違った特別な値です。
nilは変数作成時には代入できないので、値がないかもしれないOptional型を利用します。
Optional型は型の後に?をつけると宣言でき、何も値を代入しないとnilが代入されます
var surveyAnswer: String? // nil
Optional型の変数を利用する時はまずnilではないことを明確にしてから使用します。
var serverResponseCode: Int? = 404
print(serverResponseCode) // Optional(404)と出力される
if let serverResponseCode = serverResponseCode {
print(serverResponseCode) // 404
}
nilではないことを明確にすることをアンラップ、
その前のOptional()に包まれた状態をラップとゆうそうです。
ここではnilの使い方があまりわからないので、概念だけ覚えておきます。
まとめ
PythonやJavascriptを経験しているので、大体の内容はすぐに理解できましたが、Optional型は難しかったです。
よければTwitterに遊びに来てください😃