Swift データ型

プログラミング言語を使用してプログラミングする場合、さまざまなデータ型によって異なる情報を格納する必要があります。

変数のデータ型は、これらの値を表すビットがコンピューターのメモリにどのように格納されるかを決定します。変数を宣言する場合にも、データ型を指定できます。

すべての変数には、保存できるデータの種類を決定するため、データ型があります。

組み込みのデータ型

Swiftは、様々なデータ型を提供しています。常用のデータ型を次に示します。

Int

  • 32ビットプラットフォームでは、IntとInt32の長さは同じです。
  • 64ビットプラットフォームでは、IntとInt64の長さは同じです。

特定の長さの整数が必要でない限り、通常はIntを使用すれば十分です。 これより、コードの一貫性と再利用性を向上させることができます。 32ビットプラットフォームでも、Intが格納できる整数範囲は-2,147,483,648~2,147,483,647に達する可能性があり、これは十分です。

UInt

Swiftは、現在のプラットフォームのネイティブワードサイズと同じ長さの特別な符号なしタイプUIntも提供します。

  • 32ビットプラットフォームでは、UIntとUInt32の長さは同じです。
  • 64ビットプラットフォームでは、UIntとUInt64の長さは同じです。

注:現在のプラットフォームのネイティブワードサイズと同じ長さの符号なし整数を格納する必要がある場合を除いて、UIntをできるだけ使用しないようにしてください。 格納する値が負数でないことがわかっている場合でも、Intを使用することがお勧めです。 Intを統一して使用すると、コードの再利用性が向上でき、異なるデータ型の数値の互換が回避でき、数値のデータ型と一致するようになります。

整数型については、次の点に注意する必要があります。

  • 32ビットシステムでは、IntとInt32の長さは同じです。
  • 64ビットシステムでは、IntとInt64の長さは同じです。
  • 32ビットシステムでは、UIntとUInt32の長さは同じです。
  • 64ビットシステムでは、UIntとUInt64の長さは同じです。
  • Int8、Int16、Int32、Int64は、それぞれ8ビット、16ビット、32ビット、および64ビットの符号付き整数型を表します。
  • UInt8、UInt16、UInt32、UInt64は、それぞれ8ビット、16ビット、32ビット、および64ビットの符号なし整数型を表します。

浮動小数点数:Float、Double

浮動小数点数とは、3.14159、0.1、-273.15などの小数部の数です。

浮動小数点型は整数型よりも広い範囲を表し、Int型より大きい数値またはより小さい数値を格納できます。Swiftは、次の2種類の符号付き浮動小数点数を提供します。

doubleは、64ビットの浮動小数点数を表します。 大きな浮動小数点数または非常に高精度の浮動小数点数を格納する必要がある場合は、この型を使用してください。
Floatは、32ビットの浮動小数点数を表します。 このタイプは、精度が高くない場合に使用できます。

ヒント:

Doubleは少なくとも15桁の高精度であり、Floatは少なくとも6桁です。 どの型を選択するかは、コードが処理する必要のある値の範囲によって異なります。

ブール値:Bool

Swiftには、Boolと呼ばれる基本的なブール型(Boolean)があります。 ブール値は、真と偽しかないであるため、論理値を示します。 Swiftには、trueとfalseの2つのブール定数があります。

文字列:String

文字列は、文字のシーケンス集合です。例えば、

"Hello, World!"

文字:Character

文字は1文字を示します。

"C"

オプション型:Optional

オプション型は、値が欠落している可能性がある状況を処理できます。 オプション型は、値または値なしを示します。

数値範囲

次の表には、さまざまな変数型のメモリのストレージスペース、および変数型の最大値と最小値を示しています。

タイプサイズ(ビット)範囲
Int81 ビット-128 ~ 127
UInt81 ビット0 ~ 255
Int324 ビット-2147483648 ~ 2147483647
UInt324 ビット0 ~ 4294967295
Int648 ビット-9223372036854775808 ~ 9223372036854775807
UInt648 ビット0 ~ 18446744073709551615
Float 4ビット1.2E-38 ~ 3.4E+38 (~6 digits)
Double8 ビット2.3E-308 ~ 1.7E+308 (~15 digits)

タイプエイリアス

タイプエイリアスは、現在のタイプのエイリアスを定義します。タイプエイリアスは、typealiasキーワードで定義されます。 構文は次のとおりです。

typealias newname = type

次の例では、IntのタイプエイリアスをFeetとして定義しています。

typealias Feet = Int

次には、エイリアスによって変数を定義します。

import Cocoa

typealias Feet = Int
var distance: Feet = 100
print(distance)

playgroundによって上記のプログラムを実行した出力結果は次の通りです。

100

タイプセーフ

Swiftはタイプセーフ(type safe)な言語です。

Swiftはタイプセーフであるため、コードをコンパイルするときにタイプチェック(type checks)を実行し、不一致のタイプをエラーとしてマークします。 これより、開発中にはできるだけ早い段階でバグを見つけて修正できます。

import Cocoa

var varA = 42
varA = "This is hello"
print(varA)

上記のプログラムは、Xcodeでエラーが発生します。

error: cannot assign value of type 'String' to type 'Int'
varA = "This is hello"

これは、「String」文字列を「Int」変数に割り当てることができないことを意味します。

型推論

異なる型の値を処理する必要がある場合、タイプチェックはエラーを回避することに役立ちますが、定数と変数を宣言するたびに型を明示的に宣言する必要があるという意味ではありません。

型を明示的に指定しない場合、Swiftは型推論(type inference)を使用して適切なタイプを選択します。

たとえば、型を宣言せずに42を新しい定数に割り当てると、割り当てた初期値は整数のように見えるため、Swiftは定数型がIntであると推測できます。

let meaningOfLife = 42
// meaningOfLife Int型であると推定される

同様に、浮動小数点リテラルの型を指定しない場合、SwiftはDoubleが必要であると推測します。

let pi = 3.14159
// pi Double型であると推定される

浮動小数点数の型を推測する場合、Swiftは通常、FloatではなくDoubleを選択します。

整数と浮動小数点数が同時に、式に現れる場合、それはDouble型であると推測されます。

let anotherPi = 3 + 0.14159
// anotherPi Double型であると推定される

プリミティブ値3は型を明示的に宣言せず、浮動小数点リテラルが式に表示されるため、式はDouble型であると推測されます。

実例

import Cocoa

// varA Int型であると推定される
var varA = 42
print(varA)

// varB Double型であると推定される
var varB = 3.14159
print(varB)

// varC Double型であると推定される
var varC = 3 + 0.14159
print(varC)

上記のコードを実行すると、出力結果は次となります。

42
3.14159
3.14159
Share

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です