在下面的代码块中,我无法理解 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

有人能为我更好地解释一下吗?

有帮助吗?

解决方案

vegetable 是一个隐含的 String. 。这和你写的一样:

var vegetable: String = "red pepper"

hasSuffix 被声明为 func hasSuffix(suffix: String) -> Bool 因此返回 a Bool. 。这 where 关键字指定附加要求,并且只能用于 switch 声明。
因为这一切都充满了, vegetable 变量被分配给 x (let x).

您可以阅读更多有关 whereswitch 这里.

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top