2014年11月9日日曜日

Swift optional

  • xcode6.1

optionalの理解が曖昧なのでまとめました。

Forced unwrapping

optional型を強制的に非optional型にする。変数に!を付加する。


class Goku {
    func talk() -> String {
        return "ossu"
    }
}

var goku :Goku? = Goku()

println(goku!.talk()) # "ossu"

!を付加しないとコンパイルエラーが発生する。

Optional Chaining

optional valueのあとに?をつけて呼び出す。optional chainingを呼び出した結果は常にoptional valueである。


class Goku {
    func talk() -> String {
        return "ossu"
    }
}

var goku :Goku? = Goku()

println(goku?.talk()) # Optional("ossu")

Implicitly Unwrapped Optional

変数をImplicitly Unwrapped Optional型で宣言する際には、?ではなく、!を使う


class Saiyajin {
    
    var version: Int {
        return 1
    }
}

var saiyajin: Saiyajin! = Saiyajin()
saiyajin.version # 1

ついでにForced unwrappingとOptional Chainingの場合


var saiyajin2: Saiyajin? = Saiyajin()
saiyajin2?.version # Some[1]
saiyajin2!.version # 1 

出力する結果は同じです。

nilの使い方



class Saiyajin {
    
    var version: Int {
        return 1
    }
}

var saiyajin: Saiyajin! = nil
saiyajin.version # ランタイムエラー

scalaを組んだことないと慣れるまでちょっと大変かもしれませんね。

参考サイト

この記事がお役にたちましたらシェアをお願いします

このエントリーをはてなブックマークに追加

0 件のコメント:

コメントを投稿

Related Posts Plugin for WordPress, Blogger...