Swiftクイックエントリー(二)基本データ型


関連記事Swift快速入門(一)最初のSwiftプログラム
1.変数と定数
定数と変数の宣言
Swfitは強いタイプの言語で、Swiftはすべての変数と定数を先に宣言して使用しなければならない.変数を宣言するにはvarを使用し、定数を宣言するにはletを使用する必要があります.
var    [:  ] =   
let    [:  ] =   

次に例を示します.
//            
var age : Int
//           ,                  String
var game= "    "
//                 ,      
var age1: Int = 30;
//                  ,      
var game1 : String = 500;

//     ,        ,               
let maxAge = 120
//      ,          ,         
let game2: String = "    "

出力定数と変数
print関数を使用して、現在の定数または変数の値を出力できます.
print(game) //    

Swiftは文字列補間(string interpolation)で定数名または変数名をプレースホルダとして長い文字列に追加し、Swiftは現在の定数または変数の値でこれらのプレースホルダを置き換えます.定数または変数名をカッコに入れ、カッコを付ける前にスラッシュを使用して変換します.
print("game   :\(game)") //game   :    

2.整形
整数は、23や23のような小数部のない数字です.整数は、符号(正、負、ゼロ)または符号なし(正、ゼロ)であってもよい.Swiftは、8,16,32,64ビットの符号付きおよび符号なし整数タイプを提供する.これらの整数タイプはC言語の命名方式とよく似ています.例えば、8ビットの符号なし整数タイプはUInt 8、32ビットの符号付き整数タイプはInt 32です.Swiftの他のタイプのように、整数タイプは大文字で命名されています.
せいけいはんい
異なる整数タイプのminプロパティとmaxプロパティにアクセスして、対応するタイプの最大値と最小値を取得できます.
let minValue = UInt8.min // minValue  0
let maxValue = UInt8.max // maxValue  255

Int型とUInt型
Int型が占めるメモリは現在のプラットフォームの原生字長と同じである:32ビットプラットフォームに対して、Int型とInt 32型の長さは同じで、64ビットプラットフォームに対して、Int型とInt 64型の長さは同じである.また、Swiftは符号なし整数のサポートもサポートしています.しかし、現在のプラットフォームの元の文字長と同じ符号のない整数を保存する必要がない限り、UIntは使用しないでください.この場合を除いて、保存する値が負でないことが知られていても、Intを使用したほうがいいです.Intを統一的に使用することで、コードの多重性を向上させ、異なるタイプの数字間の変換を回避し、数字のタイプ推定に一致させることができます.32ビットプラットフォームでも、Intが格納できる整数の範囲は-217483648~2174848647に達することができ、多くの場合、これは十分な大きさです.
整数数値表現形式
Swift整数値には4つの表示方法があります.
  • 10進数:デフォルトは10進数整数です.
  • バイナリ:0 bで始まる整数.
  • 8進数:0 oで始まる整数.
  • 16進数:0 xで始まる整数.
  • let decimalInteger = 17
    let binaryInteger = 0b10001 //     17
    let octalInteger = 0o21 //     17
    let hexadecimalInteger = 0x11 //      17 

    3.浮動小数点型
    浮動小数点タイプは整数タイプよりも範囲が広く、Intタイプよりも大きいまたは小さい数値を格納できます.Swiftには、64ビットの浮動小数点数を表すDoubleという記号付き浮動小数点数の2種類があります.このタイプは、大きな浮動小数点数または高精度な浮動小数点数を格納する必要がある場合に使用します.Floatは32ビットの浮動小数点数を表す.精度の要求が高くなければ、このタイプを使用できます.
    浮動小数点数値表現形式
    Swiftの浮動小数点数は3つの表現形式があります.
  • 十進法:この形式は通常の簡単な浮動小数点数、例えば2.23、50.0である.浮動小数点数には小数点数を含める必要があります.そうしないと、整数タイプとして処理されます.
  • 科学カウント形式:例えば2.23 e 2(2.23×10²),2.23E2(2.23×10²).
  • 16進数形式:この形式の浮動小数点数は0 xで始まる必要があり、0 x 2.a 2 p 2(0 x 2.a 2)などの指数部分を表すためにpを使用する必要がある.×10²)

  • 4.数値タイプ変換
    整数変換
    異なる整数型の変数と定数は、異なる範囲の数字を格納することができる.Int 8型の定数または変数が格納できる数字の範囲は-128~127であるが、UInt 8型の定数または変数が格納できる数字の範囲は0~255である.数字が定数または変数が格納できる範囲を超えている場合、コンパイル時にエラーが発生する.
    // UInt         ,     
    let age: UInt = -1 
    // Int8              ,      
    let big: Int8 = Int8.max + 1 

    1つの数値タイプを別の数値タイプに変換するには、現在の値を使用して、目標タイプの新しい数値を初期化します.次の例では、定数twoはUInt 16タイプですが、定数oneはUint 8タイプです.これらの数値タイプが異なるため、直接加算できません.UInt 16(one)を呼び出します.新しいInt 16の数値を作成し、oneの値で初期化し、この新しい数値を使用して計算します.
    let two: UInt16 = 2
    let one: UInt8 = 1
    let third= two+ UInt16(one) 

    整数と浮動小数点数変換
    整数と浮動小数点数の変換には、タイプを明示的に指定する必要があります.
    let three = 3
    let point = 0.141596
    let add= Double(three) + point // add  3.14159,       Double    

    タイプ変換を行う場合は、できるだけテーブル数の広いデータ型に変換するようにしてください.このようなプログラムはより安全ですが、逆に変換すると、実行時のエラーが発生する可能性があります.Swiftの各種数値型テーブル数の範囲は、Int 8-Int 16-Int 32-Int 64-Float-Doubleの順に小さくなります.
    5.ブール型
    SwiftにはBoolという基本的なBoolean(Boolean)タイプがあり、その数値はtrueとfalseのみで、0または非0で表すことはできません.他のデータ型もBoolタイプに変換することはできません.
    var isGame= true
    var isShow= false 

    文字列「true」および「false」は直接Boolタイプに変換されませんが、Boolタイプ変数は文字列に補間できます.
    var str:String="\(isGame)   "
    print(str)

    6.タプルタイプ
    メタグループ型変数の定義
    メタグループ(tuples)は複数の値を1つの複合値に結合する.メタグループ内の値は任意のタイプを使用することができ、同じタイプである必要はない.
    //       ,      ,          (Int, Int, String)
    var game= (1, 2 , "    ")
    //              
    var score : (Int , Int , String , Double)
    //                    
    score = (98 , 89 , "  " , 20.4)

    タプル・タイプのメンバーは、再びタプルになります.
    var test : (Int , (Int , String))
    test = (20 , (15 , "     "))

    出力タプル:
    print("game     :\(game)") print("score     :\(score)") print("test     :\(test)")

    メタグループの要素値の取得
    Swiftでは、次の表からメタグループの単一要素にアクセスできます.メタグループの下付き文字は0から始まります.
    print("game        :\(game.0)") print("game        :\(game.2)") print("test    2     2    :\(test.1.2)")

    メタグループ内の要素の名前付け
    メタグループを定義するときにkey:valueの形式を使用してメタグループを定義することもできます.この形式は、各要素に名前を指定し、名前を指定するとより読みやすくなります.
    //              
    var score : (java:Int , swift:Int , oc:String , ruby:Double)
    //           ,               
    score = (99 , 60 , "  " , 20.1) 
    //   key         ,      ,             
    score = (oc:"  " , swift:60 , java:99 , ruby:20.1) 

    7.オプションのタイプ
    オプションのタイプと値がありません
    既存のタイプの後に続く?はオプションタイプを表し、オプションタイプの変数は「値の欠落」を処理するために使用されます.まず、次のコードを見てみましょう.
    var str = "    "
    var num :Int = str.toInt()//   
    var num1: Int? = str.toInt()//     

    2行目のコードは、「九陰真経」というStringタイプはIntタイプに変換できないため、strが数値型の文字列に等しい場合は変換に成功します(var str=「11」).変換に失敗した場合、Int値を返すことができません.これが「値が欠落している」場合です.そのため、ここではInt?タイプの変数を使用して変換結果を格納する必要があります.したがって、3行目のコードは正しいです.Swfitはnilで「値が欠落している」ことを表します.そのため、上のnum 1変数の値はnilです.オプションタイプの変数と定数のみがnilを受信でき、非オプションの変数と定数はnilを受信できません.
    強制解析
    Int?タイプはIntタイプと同じタイプではありません.プログラムはInt?タイプの値をIntタイプとすることはできません.オプションタイプの実際に格納されている値を取得するために、オプションタイプの値の後ろに「!」の番号を付けることができます.この感嘆符は、このオプション変数に値があることが知られていることを示しています.その中の値を抽出してください.この感嘆符を追加して解析する方法は強制解析と呼ばれています.
    var str : String? = "    "
    // str String?   ,     String   s  
    var s : String = str//   

    上記の例は間違っていますが、このように書けば問題ありません.
    var s : String = str!
    print(s)

    強制解析は、オプションタイプの変数または定数に値がある場合にのみ解析に成功する必要があります.そうしないと、エラーが報告されます.強制解析を実行してエラーにならないように、Swiftはif文を提供してオプションタイプに値があるかどうかを判断するので、上記の文は次のような形式に変更するのが適切です.
    var str : String? = "    "
    if str != nil
    {
        //    String  ,      String   s  
        var s : String = str!
        print(s)
    }else{
        print("str nil,      ")
    }

    暗黙のオプションタイプ
    暗黙的オプションとは、任意の既存のタイプの後に「!」を追加することです.Intタイプを例にとると、Int?とInt!の違いは、プログラムがInt?タイプの値を取得する場合、プログラムは変数名の後に「!」接尾辞を追加して強制解析を行う必要がありますが、Int!は必要ありません.Swiftは自動的に暗黙的解析を実行します.
    var s1: String? = "    "
    //   String?    ,             
    var tmp : String = s1!
    var s2 : String! = "     "
    //   String!      ,             
    var tmp2 : String = s2

    暗黙的オプションタイプの値が値がない場合、プログラムが値を取得しようとすると、実行時エラーが発生します.強制解析と同様に、if文を使用して暗黙的オプションタイプに値があるかどうかを判断します.
    var str : String! = "     "
    if str != nil {
    //   String!      ,             
    var s : String = str
    print(s)
    }else{
       print("s nil,      ")
    }
    
    

    オプションのバインド
    オプションバインドは、オプションに値が含まれているかどうかを判断するために使用され、含まれている場合は一時定数または変数に値を割り当てます.オプションバインドは、if文およびwhile文で一般的に使用され、オプションの値を判断し、定数または変数に値を割り当てます.
    var str : String! = "    "
    //       str  ,     tmp  。
    if var tmp = str
    {
        print("str   :\(tmp)")
    }else{
        print("str   nil,    !")
    }

    8.文字と文字列
    SwiftはCharacterを使用して文字を表し、Stringは文字列を表し、文字列は秩序ある文字セットを表す.
    文字の種類
    SwiftはUnicode文字セットを使用して文字を格納します.文字は二重引用符で囲まなければなりません.文字型を定義する値には3つの表示形式があります.
  • は、「A」、「3」などの文字定数を1文字で直接指定します.
  • は、エスケープ文字によって「」、「」などの特殊文字定数を表す.
  • はu{n}のUnicode形式を使用し、nは1~8の16進数を表す.
  • swiftでよく使用されるエスケープ文字:0空文字反スラッシュtタブ改行文字rリターンバー2重引用符'単一引用符
    文字列タイプ
    文字列の作成:
    var str="    "
    var name:String="    "

    文字列は構造体であるため、構造体のコンストラクタを呼び出して文字列を作成できます.
    var str=String()//      
    var str=String("    ")

    文字列可変
    ocにはNSStingとNSMutablesStringがあり、それぞれ可変と可変の文字列を表しています.SwiftにはStringタイプしか提供されていません.Swiftは定数と変数で文字列が可変かどうかを区別します.
    var mutableStr="     "
    let immutableStr="      "

    文字列の比較
    Swiftは文字列を比較する3つの方法を提供しています.
  • 文字列等しい==
  • 接頭辞等しいhasPrefix()
  • 接尾辞等しいhasSuffix()
  • var str="jiuyinzhenjing"
    var hasPrefix:Bool=str.hasPrefix("jiu")
    print(hasPrefix)//   true

    9.タイプ別名
    Swiftは、タイプ別名を提供し、既存のタイプに別の名前を指定し、タイプ別名をtypealiasで定義します.
    typealias UintMin=Unit16
    var max=UintMin.max//    Unit16      
    print(max)//   65535

    ここではタイプ別名は推奨されず、プログラムの可読性が低下します.