Swift データ型
どのようなプログラミング言語でプログラムする場合でも、さまざまな情報を保存するためにさまざまなデータ型を使用する必要があります。
変数のデータ型によって、それらの値を表すビットがコンピューターのメモリにどのように格納されるかが決まります。変数を宣言するときに、変数のデータ型を指定することもできます。
すべての変数には、保存できるデータの種類を決定するデータ型があります。
組み込みデータ型
Swift は、非常に豊富なデータ型を提供します。一般的に使用されるデータ型をいくつか示します。
Int
一般的に、整数の長さを具体的に指定する必要はありません。 Swift は特別な整数型 Int
を提供しており、その長さは現在のプラットフォームのネイティブの単語長と同じです: 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
可以提高代码的可复用性,避免不同类型数字之间的转换,并且匹配数字的类型推断,请参考类型安全和类型推断。
浮点数
浮点数是有小数部分的数字,比如3.14159
,0.1
和-273.15
。
浮点类型比整数类型表示的范围更大,可以存储比Int
类型更大或者更小的数字。Swift 提供了两种有符号浮点数类型:
Double
表示64位浮点数。当你需要存储很大或者很高精度的浮点数时请使用此类型。Float
表示32位浮点数。精度要求不高的话可以使用此类型。
注意:
Double
精确度很高,至少有15位数字,而Float
🎜 特定の長さの整数が必要でない限り、通常は
- On 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
を統一して使用すると、コードの再利用性が向上し、異なる型の数値間の変換が回避され、数値の型推論が一致します。「型の安全性と型の推論」を参照してください。 🎜3.14159
、0.1
、-273.15
など、小数部を含む数値です。 。 🎜🎜浮動小数点型は整数型よりも広い範囲を表し、Int
型より大きいまたは小さい数値を格納できます。 Swift は 2 つの符号付き浮動小数点数型を提供します。 🎜
- 🎜
Double
は 64 ビット浮動小数点数を表します。非常に大きい、または非常に高精度の浮動小数点数を格納する必要がある場合は、この型を使用します。 🎜- 🎜
Float
は 32 ビット浮動小数点数を表します。このタイプは、精度要件が高くない場合に使用できます。 🎜🎜注:Double
は非常に正確で、少なくとも 15 桁ありますが、Float
は少なくとも 6 桁です。数字。どのタイプを選択するかは、コードで処理する必要がある値の範囲によって異なります。 🎜ブール値
Swift には Bool と呼ばれる基本的なブール型があります。ブール値は、true または false のみであるため、論理値を指します。 Swift には、true と false の 2 つのブール定数があります。
String
文字列は文字のシーケンスです。例:
"Hello, World!"Character
Character は単一の文字を指します。例:
"C"オプションのタイプ
欠損値の可能性を処理するにはオプションのタイプ (オプション) を使用します。 。オプションのタイプは、値を表すか値を表しません。
値の範囲
次の表は、さまざまな変数タイプの記憶領域と、変数タイプの最大値と最小値を示しています。
Int8
UInt8 1バイト -127〜127 Int32 1バイト 0〜255 UInt32 4バイト -2147483648 宛先 2147483647 Int64 4バイト 0〜4294967295 UInt64 8バイト -9223372036854775808〜9223372036854775807 Float 8バイト 0〜18446744073709551615 Double 4バイト 1.2E- 38 ~ 3.4E+38 (約 6 桁) 8 バイト 2.3E-308 ~ 1.7E+308 (約 15 桁) 型エイリアス
型エイリアスは、現在の型の別の名前を定義します。型エイリアスは、typealias キーワードを使用して定義されます。構文形式は次のとおりです:
typealias newname = typeたとえば、次は Int の型エイリアスを Feet として定義します:
typealias Feet = Intここで、エイリアスを通じて変数を定義できます:
import Cocoa typealias Feet = Int var distance: Feet = 100 print(distance)上記のプログラムを実行するために playground を使用します。出力結果は次のとおりです:
100type Safety
Swift はタイプ セーフな言語です。
Swift はタイプセーフであるため、コードのコンパイル時に型チェックを実行し、不一致の型をエラーとしてマークします。これにより、開発の早い段階でバグを発見して修正できます。
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 は型推論を使用して適切な型を選択します。
たとえば、新しい定数に値 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