日14:Swiftuiの100日-オプション


オプション、NIL合体、チェックポイント9


https://www.hackingwithswift.com/100/swiftui/14

オプション


オプションは値の不在を扱います.オプションは「価値がある」または「価値が全くない」と言いますnil )"
var username: String? = nil
var password: String?

if let unwrappedName = username {
    print("We got a user: \(unwrappedName)")
} else {
    print("The optional was empty.")
}

レットアンドガード


The if let オプション値を展開し、値があるかどうかを調べ、コードを実行します.The guard let 一方、オプションが値を持たない場合は、いくつかのコードを実行します.
var myVar: Int? = 3

if let unwrapped = myVar {
    print("Run if myVar has a value inside")
}

guard let unwrapped = myVar else {
    print("Run if myVar doesn't have a value inside")
}
あなたが使うならばguard 関数ではreturn を返します.
func printSquare(of number: Int?) {
    guard let number = number else {
        print("Missing input")
        return
    }

    print("\(number) x \(number) is \(number * number)")
}

printSquare(of: nil)
printSquare(of: 2)

ニール合体


nil coalescingはオプションをアンラップし、オプションが空の場合はデフォルト値を提供します.
let captains = [
    "Enterprise": "Picard",
    "Voyager": "Janeway",
    "Defiant": "Sisko"
]

let new = captains["Serenity"] ?? "N/A"

オプション連鎖


オプションの連鎖は、オプション内でオプションを読み込むための簡単な構文です.これは、道に沿った何かがオプションであるとき、連鎖したプロパティアクセスを行う良い方法です
let names = ["Arya", "Bran", "Robb", "Sansa"]

let chosen = names.randomElement()?.uppercased() ?? "No one"
print("Next in line: \(chosen)")

チェックポイント9


整数の任意の配列を受け入れる関数を書き込み、ランダムに1を返します.配列が見つからないか空であれば、範囲1から100までの乱数を返します.

ソリューション