オプション!(feat.swift)


Optionalとは!


今日のポスターのテーマであるOptionは、私が初めてSWIFTを作ったときに「本当に本当に本当に本当に本当に」と理解しにくい2つのコンセプトの1つです.
1つは今日公開されるオプションで、もう1つはCloserです.
もしかすると、もしあなたが私の年齢と似ていて適当な電子工学部で本科レベルの教育を受けたら、入学から卒業までの勉強はC/C++で、この感じとは全然違います.
つまり慣れていないということです.
何が言いたいの?
なぜよく知らないのか話したいです.
C/C++だけでなく,ほとんどのプログラミング言語にない値を処理するのは困難である.
特定の変数が宣言され、その変数に値が割り当てられたり、割り当てられなかったりすることがあります.
// in C++
int x = 10;
このように値を宣言して書きます.その結果、この初期化動作が付属した後、変数の値状態は常に「存在」します.
これからの状態から見ると「価格はいくらですか?」フォーカス
その前に、「値は存在しますか?」と聞きます.まず関連する問題を考える必要がある.
これらの面で、存在の意味を追及することは一つの選択だと思います.
話は冗長だが,論点は一つしかない.
「値は存在しますか?」

Optional


これは線の要約です.
  • Non Optionalタイプは常に値を持つ必要があります.
  • オプションタイプは、値なしで使用できます.
  • Optionalタイプの宣言は、既存のタイプAnnotationの後?貼られるだけ
  • let str : String = "Swift" //상수선언
    let optionalStr: String? = nil//Optional String선언
    
    let a: Int? = nil//Optional Int선언
    このようにして作成されたオプションが変数と定数に割り当てられる場合のタイプについて説明します.
    let b = a
    print(tyoe(of: b))
    このように使用することができ、bはオプションのタイプを有する.

    Optionalはどう書きますか?


    もしあなたが選択を宣言して、それからこのように書いたら
    let a : Int? = 10
    print(a)

    上の写真が見えます.
    大きな図を見ると、Optionalのハウジングが10のInt値を包んでいるのを感じることができます.
    実際、Optionを利用してIntや資料型の形でOptionを使用するためには、価値としてOptionを利用するためには、まずその皮を剥がす必要があります.
    皮をむく方法はいくつかありますが、今日は2種類見ます.
  • Forced Unwrapping
  • Binding
  • 簡単に考えれば、強制破棄や限られた方法で破棄するのが便利だと思います.
    ゆっくり理解しましょう.

    Forced Unwrapping


    Unwrappingで使用する変数の後ろに!貼りましょう.
    !後ろに貼ると、カラーシェル内部の強制抽出が行われます.
    コードとして次のように使用します.
    let a : Int? = 10
    print(a!)
    とてもシンプルでパワフルに見えます!
    しかし、強制的な方法があることを知っています.大体、この方法は正しい方法ではありません.
    私たちはまずなぜかを理解します.
    オプショナルの価格を引き寄せるのがいいです
    ただし、Forced Unwrappingの問題は、抽出するオブジェクトの値が存在しないことです.
    これは、プログラムが実行中にクラッシュする可能性がある要因の1つです.
    だから実際のサービスのアプリで使うと...大事になる可能性があるという意味です.
    それでも、この方法でUnwrappingをしなければならないなら、少なくとも1つの安全装置を取り付けてから行きましょう.
    安全装置は以下の通りです.
    let num : Int? = nil
    if num != nil {
    	print(num!)
    }
    このように、nilが存在するかどうかを確認し、crashの理由を解消すれば、完全に使用できます.
    結論は以下の通りです.
  • オプションの値を使用するには、Unwrappingが必要です.
  • これらを解決する方法の1つはForced Unwrappingである.
  • Binding


    直感的に安全な外部バインドについて説明します.
    まずコードを見てみますが、
    var num : Int? = nil
    if num != nil {
    	print(num!)
    }else {
    	print("Empty")
    }
    このように使うのは私たちが上で学んだForced Unwrapping方式です.
    Bindingでは、
    if let n = num {
    	print(n)
    }else {
    	print("empty")
    }
    この方法で問題を解決できます.これをオプションバインドと呼びます.
    Bindingには3つの種類があります.
  • if let or var格納場所=Unwrappingターゲット{
  • while let or var格納場所=Unwrappingターゲット{
  • guard let or var格納場所else{End}
  • 上のテクニックでBindingを行い、それらの文をバインドと言います.
    上記のバインドキーワードで使用できますが、特別な点があればguardセクションです.
    他のキーワードのBinding要素が任意の特定の条件下の境界点で行うことができない場合,次の境界点を歩くプログラムが指す感覚がある.
    しかしguardはBindingに失敗するとすぐに関数を終了するという特徴がある.
    例を挙げて今日の整理を終わらせる
    var str: String? = "str"
    guard let str = str else {
        fatalError()
    }
    guardはこのように使われています.
    整理完了!