- 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 件のコメント:
コメントを投稿