Swiftデータ型
4368 ワード
==========
プログラム言語を使用してプログラミングする場合は、さまざまなデータ型を使用して異なる情報を格納する必要があります.
変数のデータ型は、これらの値を表すビットをコンピュータのメモリに格納する方法を決定します.変数を宣言するときに、そのデータ型を指定することもできます.
すべての変数には、どのデータを格納できるかを決定するデータ型があります.
組み込みデータ型
Swiftは非常に豊富なデータ型を提供し、以下によく使われるいくつかのデータ型を示しています.
Int
一般的には、整数の長さを指定する必要はありません.Swiftは、現在のプラットフォームの元の文字長と同じ長さの特殊な整数タイプは32ビットプラットフォーム上で、 は64ビットプラットフォーム上で、
特定の長さの整数が必要でない限り、一般的には
UInt
Swiftは、現在のプラットフォームの元の文字長と同じ長さの特殊な符号なしタイプは32ビットプラットフォーム上で、 は64ビットプラットフォーム上で、
注意:なるべく使わない
整数タイプは、次の点に注意してください. 32ビットシステムでは、IntとInt 32は同じ長さです. 64ビットシステムでは、IntとInt 64は同じ長さです. 32ビットシステムでは、UIntとUInt 32の長さは同じである. 64ビットシステムでは、UIntとUInt 64の長さは同じである. Int 8、Int 16、Int 32、Int 64はそれぞれ8ビット、16ビット、32ビット、64ビットの符号付き整数形式を表す. UInt 8,UInt 16,UInt 32,UInt 64はそれぞれ8ビット,16ビット,32ビット,64ビットの符号なし整数形式を表す.
浮動小数点数:Float、Double
浮動小数点数は、
浮動小数点タイプは整数タイプよりも範囲が広く、 Doubleは64ビット浮動小数点数を表す.このタイプは、大きな浮動小数点数または高精度な浮動小数点数を格納する必要がある場合に使用します. Floatは32ビット浮動小数点数を表す.精度の要求が高くなければ、このタイプを使用できます.
注意:
ブール値:Bool
SwiftにはBoolという基本的なブール(Boolean)タイプがあります.ブール値は、真または偽しかないため、論理的な値を指します.Swiftには2つのブール定数,trueとfalseがある.
文字列:String
文字列は、次のような文字のシーケンスの集合です.
"Hello, World!"
文字もじ:Character Character
文字は、次のような単一の文字を指します.
"C"
オプションタイプ:Optional
オプションのタイプを使用して、値が欠落する可能性がある場合を処理します.オプションのタイプは、値があるか値がないかを示します.
数値範囲
次の表に、異なる変数タイプのメモリの記憶領域と、変数タイプの最大最小値を示します.
を選択します.
サイズ(バイト)
区間値
Int8
1バイト
-128~127
UInt8
1バイト
0~255
Int32
4バイト
-21147483648~2147483647
UInt32
4バイト
0~4294967295
Int64
8バイト
-922337203685475808から922337203685475807
UInt64
8バイト
0から18446744073709551615
Float
4バイト
1.2 E-38から3.4 E+38(~6 digits)
Double
8バイト
2.3 E-308~1.7 E+308(~15 digits)
タイプ別名
タイプ別名は、typealiasキーワードを使用して定義される現在のタイプに別の名前を定義します.構文の形式は次のとおりです.
typealias newname = type
たとえば、次のように、Intのタイプ別名をFeetと定義します.
typealias Feet = Int
別名で変数を定義できます.
import Cocoatypealias Feet = Intvar distance: Feet = 100print(distance)
私たちはplaygroundを使用して以上のプログラムを実行し、出力結果は:
100
タイプセキュリティ
Swiftはタイプセキュリティ(type safe)の言語です.
Swiftはタイプが安全なので、コードをコンパイルするときにタイプチェック(type checks)を行い、一致しないタイプをエラーとしてマークします.これにより、開発時にエラーを早期に発見し、修復することができます.
import Cocoavar varA = 42varA = "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タイプと推定されます.
≪インスタンス|Instance|emdw≫
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)と推測されます
以上のコードを実行し、出力結果は次のとおりです.
423.141593.14159
プログラム言語を使用してプログラミングする場合は、さまざまなデータ型を使用して異なる情報を格納する必要があります.
変数のデータ型は、これらの値を表すビットをコンピュータのメモリに格納する方法を決定します.変数を宣言するときに、そのデータ型を指定することもできます.
すべての変数には、どのデータを格納できるかを決定するデータ型があります.
組み込みデータ型
Swiftは非常に豊富なデータ型を提供し、以下によく使われるいくつかのデータ型を示しています.
Int
一般的には、整数の長さを指定する必要はありません.Swiftは、現在のプラットフォームの元の文字長と同じ長さの特殊な整数タイプ
Int
を提供します.Int
とInt32
の長さは同じである.Int
とInt64
の長さは同じである.特定の長さの整数が必要でない限り、一般的には
Int
を使用すれば十分です.これにより、コードの一貫性と多重性が向上します.32ビットプラットフォームにおいても、Int
が格納できる整数の範囲は-2,147,483,648
~2,147,483,647
に達することができ、多くの場合、これは十分な大きさである.UInt
Swiftは、現在のプラットフォームの元の文字長と同じ長さの特殊な符号なしタイプ
UInt
も提供しています.UInt
とUInt32
の長さは同じである.UInt
とUInt64
の長さは同じである.注意:なるべく使わない
UInt
、現在のプラットフォームの元の文字長と同じ符号なし整数を格納する必要がない限り.この場合以外はInt
は、保存する値が非負であることが知られていても.統一的に使用Int
は、異なるタイプの数字間の変換を回避し、数字のタイプ推定に一致するコードの多重化性を向上させることができる.整数タイプは、次の点に注意してください.
浮動小数点数:Float、Double
浮動小数点数は、
3.14159
0.1
および-273.15
のような小数部の数字です.浮動小数点タイプは整数タイプよりも範囲が広く、
Int
タイプよりも大きいまたは小さい数値を格納することができる.Swiftは2種類の符号付き浮動小数点数タイプを提供しています.注意:
Double
は精度が高く、少なくとも15ビットの数字があります.Float
は少なくとも6桁の数字しかありません.どのタイプを選択するかは、コードが処理する値の範囲によって異なります.ブール値:Bool
SwiftにはBoolという基本的なブール(Boolean)タイプがあります.ブール値は、真または偽しかないため、論理的な値を指します.Swiftには2つのブール定数,trueとfalseがある.
文字列:String
文字列は、次のような文字のシーケンスの集合です.
"Hello, World!"
文字もじ:Character Character
文字は、次のような単一の文字を指します.
"C"
オプションタイプ:Optional
オプションのタイプを使用して、値が欠落する可能性がある場合を処理します.オプションのタイプは、値があるか値がないかを示します.
数値範囲
次の表に、異なる変数タイプのメモリの記憶領域と、変数タイプの最大最小値を示します.
を選択します.
サイズ(バイト)
区間値
Int8
1バイト
-128~127
UInt8
1バイト
0~255
Int32
4バイト
-21147483648~2147483647
UInt32
4バイト
0~4294967295
Int64
8バイト
-922337203685475808から922337203685475807
UInt64
8バイト
0から18446744073709551615
Float
4バイト
1.2 E-38から3.4 E+38(~6 digits)
Double
8バイト
2.3 E-308~1.7 E+308(~15 digits)
タイプ別名
タイプ別名は、typealiasキーワードを使用して定義される現在のタイプに別の名前を定義します.構文の形式は次のとおりです.
typealias newname = type
たとえば、次のように、Intのタイプ別名をFeetと定義します.
typealias Feet = Int
別名で変数を定義できます.
import Cocoatypealias Feet = Intvar distance: Feet = 100print(distance)
私たちはplaygroundを使用して以上のプログラムを実行し、出力結果は:
100
タイプセキュリティ
Swiftはタイプセキュリティ(type safe)の言語です.
Swiftはタイプが安全なので、コードをコンパイルするときにタイプチェック(type checks)を行い、一致しないタイプをエラーとしてマークします.これにより、開発時にエラーを早期に発見し、修復することができます.
import Cocoavar varA = 42varA = "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タイプと推定されます.
≪インスタンス|Instance|emdw≫
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)と推測されます
以上のコードを実行し、出力結果は次のとおりです.
423.141593.14159