Как работает let x, где x.hasSuffix («перец») работает

StackOverflow https://stackoverflow.com//questions/24004251

  •  20-12-2019
  •  | 
  •  

Вопрос

В приведенном ниже блоке кода у меня возникли проблемы с пониманием 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 поэтому an возвращает a Boolwhere Ключевое слово определяет дополнительные требования и может использоваться только в switch заявления.
Поскольку все это пронизано, vegetable переменной присваивается значение x (let x).

Вы можете прочитать больше о where и switch здесь.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top