В Swift, дает ли компилятор неявный доступ к значению, которое вы включаете? - PullRequest
0 голосов
/ 17 сентября 2018

Отличная особенность Swift - она ​​дает вам множество неявных переменных, таких как:

  • value в операторе set.
  • oldValue в операторе didSet.
  • error в предложении catch.

Мне интересно, есть ли в выражении switch нечто подобное. Не думаю, но хотел спросить.

Например, возьмем следующий код (предположим, что есть перечисление, которое определяет вычисляемое свойство displayName).

Обратите внимание, как я должен явно создать временную переменную для хранения результата функции, поскольку я должен использовать ее как для включения, так и для выключения в операторах case ниже ...

let valToSwitchOn = getValToSwitchOn()

switch valToSwitchOn {
    case .categories: return categories.count > 0 ? valToSwitchOn.displayName : nil
    case .narratives: return narratives.count > 0 ? valToSwitchOn.displayName : nil
}

Однако, если Swift предложит неявную переменную для включенного значения, это упростит код, например, (Примечание: здесь я использую switchValue в качестве примера) ...

switch getValToSwitchOn() {
    case .categories: return categories.count > 0 ? switchValue.displayName : nil
    case .narratives: return narratives.count > 0 ? switchValue.displayName : nil
}

Это позволяет мне напрямую переключать коммутатор с помощью функции без необходимости сначала создавать явную переменную, поскольку включенное значение предоставляется неявно для меня. Не так уж много, если я это сделаю (это всего лишь одна строка), но мне было интересно, было ли уже что-то подобное.

Так есть ли у Swift неявная переменная для switch?

1 Ответ

0 голосов
/ 17 сентября 2018

Для переключателя нет неявной переменной, поскольку вы используете операторы case для проверки значения переключателя.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...