Swiftデータ型

4368 ワード

==========
プログラム言語を使用してプログラミングする場合は、さまざまなデータ型を使用して異なる情報を格納する必要があります.
変数のデータ型は、これらの値を表すビットをコンピュータのメモリに格納する方法を決定します.変数を宣言するときに、そのデータ型を指定することもできます.
すべての変数には、どのデータを格納できるかを決定するデータ型があります.
組み込みデータ型
Swiftは非常に豊富なデータ型を提供し、以下によく使われるいくつかのデータ型を示しています.
Int
一般的には、整数の長さを指定する必要はありません.Swiftは、現在のプラットフォームの元の文字長と同じ長さの特殊な整数タイプIntを提供します.
  • は32ビットプラットフォーム上で、IntInt32の長さは同じである.
  • は64ビットプラットフォーム上で、IntInt64の長さは同じである.

  • 特定の長さの整数が必要でない限り、一般的にはIntを使用すれば十分です.これにより、コードの一貫性と多重性が向上します.32ビットプラットフォームにおいても、Intが格納できる整数の範囲は-2,147,483,648~2,147,483,647に達することができ、多くの場合、これは十分な大きさである.
    UInt
    Swiftは、現在のプラットフォームの元の文字長と同じ長さの特殊な符号なしタイプUIntも提供しています.
  • は32ビットプラットフォーム上で、UIntUInt32の長さは同じである.
  • は64ビットプラットフォーム上で、UIntUInt64の長さは同じである.

  • 注意:なるべく使わないUInt、現在のプラットフォームの元の文字長と同じ符号なし整数を格納する必要がない限り.この場合以外はIntは、保存する値が非負であることが知られていても.統一的に使用Intは、異なるタイプの数字間の変換を回避し、数字のタイプ推定に一致するコードの多重化性を向上させることができる.
    整数タイプは、次の点に注意してください.
  • 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
    浮動小数点数は、3.141590.1および-273.15のような小数部の数字です.
    浮動小数点タイプは整数タイプよりも範囲が広く、Intタイプよりも大きいまたは小さい数値を格納することができる.Swiftは2種類の符号付き浮動小数点数タイプを提供しています.
  • Doubleは64ビット浮動小数点数を表す.このタイプは、大きな浮動小数点数または高精度な浮動小数点数を格納する必要がある場合に使用します.
  • Floatは32ビット浮動小数点数を表す.精度の要求が高くなければ、このタイプを使用できます.

  • 注意: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 Cocoa​typealias Feet = Intvar distance: Feet = 100print(distance)
    私たちはplaygroundを使用して以上のプログラムを実行し、出力結果は:
    100
    タイプセキュリティ
    Swiftはタイプセキュリティ(type safe)の言語です.
    Swiftはタイプが安全なので、コードをコンパイルするときにタイプチェック(type checks)を行い、一致しないタイプをエラーとしてマークします.これにより、開発時にエラーを早期に発見し、修復することができます.
    import Cocoa​var 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