Swiftで遊ぼう! on Hatena

あしたさぬきblogでやってた初心者オヤジのiOSプログラミング奮闘記がHatenaに来ました

Swiftで遊ぼう! - 227 - Developing iOS 8 Apps with Swift - Optionalは単なるenum

2016年5月12日:スタンフォード大学の春の講義(Developing iOS 9 Apps with Swift)の復習をしていて改訂:Swift2.2向けに拡張

    • -

昨日の疑問は解消されていませんが、立ち止まらず次に進みます。

またいつか疑問が解消されることを期待しながら...(^^;)

スタンフォード大のポール先生の講義はやっと4つ目の"More Swift and Foundation Frameworks"に入ります。

最初の話題はなんとOptionalでした!

これを見ても問題の解決にはならなかったけど、Optionalの概念は理解できました。

こういうコンセプトでOptionalが用意されているんですね。enumだったんですね。驚きでした。

    enum Optional<T> { // <T>はジェネリック
        case None
        case Some(T)
    }

let x: String? = nil
次のように書き換えられます。

    let x = Optional<Strin>.None

let x:String? = "hello"
これは次のように置き換えられるんですね。

    let x = Optional<String>.Some("hello")

そしてオプショナルのアンラップ「!」は次のようにswitchを使うのと同等になります。

var y = x!
は次のように置き換えることができます。

    switch x {
    case Some(let value): y = value
    case None: //クラッシュ!
    }

Optionalをアンラップして使う「if let」を使う場合は...
let x: String? = ...
if let y = x {
// do something with y
}
というコードは次のように置き換えられます。

    switch x {
    case Some(let value):
        // do something with y
    case None:
        break
    }

次はOptionalsのチェイン化の説明。

    var display: UILabel?
    if let label = display {
        if let text = label.text {
            let x = text.hashValue
            ....
        }
    }

これを次のようにオプショナルチェインで表現できます。

    if let x = diplay?.text?.hashValue {...}

当然「x」はOptional("Int型の数字")になります。

そして「??」の説明も加えていますが、もう1つ「? :」も次のページで確認します。

yataiblue.hatenablog.com

ということで今日はここまで。