9

以下のコード ブロックでは、 を理解できませんlet x where x.hasSuffix("pepper")

let vegetable = "red pepper"

switch vegetable {
    case "celery":
        let vegetableComment = "Add some raisins and make ants on a log."
    case "cucumber", "watercress":
        let vegetableComment = "That would make a good tea sandwhich"
    case let x where x.hasSuffix("pepper"):
        let vegetableComment = "Is it a spicy \(x)"
    default:
        let vegetableComment = "Everything tastes good in soup."
}

コンソール出力

野菜コメント:辛い唐辛子ですか

次のロジックが発生しているようです。

x = vegetable
if (x's suffix == 'pepper') 
    run case

誰かが私のためにこれをよりよく説明できますか?

4

2 に答える 2

21

vegetableは暗黙的Stringです。それはあなたが書くのと同じです:

var vegetable: String = "red pepper"

hasSuffixとして宣言されてfunc hasSuffix(suffix: String) -> Boolいるため、 a を返しますBool。キーワードは追加の要件を指定し、ステートメント whereでのみ使用できます。 このすべてが満たされているため、変数は x ( ) に割り当てられます。switch
vegetablelet x

との詳細についてはwhereswitch こちらをご覧ください。

于 2014-06-02T23:09:40.910 に答える