Использование guard с необязательным назначением значения

мне нравится использовать guard потому что это делает ваши намерения ясны. Я использовал его как для дополнительной версии, как это...

guard let c = MyOptionalArray else { return }

а также для более традиционных границ проверки на опциональных...

guard MyArray.count > 0 else { return }

но теперь я хотел бы использовать это count в следующем коде. Так я и сделал...

guard let c = MyArray.count > 0 else { return }

который не работает, очевидно, поэтому я сделал то, что должен...

guard let c = parts.count where c > 1 else { return }

но это говорит Initializer for conditional binding must have Optional type, not 'Int'. Теперь я понимаю ошибку и попробовал куча, казалось бы, очевидных изменений в формате,но нет. Нет ли способа использовать guard в качестве назначения для необязательного значения? Это похоже на то, что он должен уметь делать.

1 ответов


Если вы бросите case там, это сработает. Итак:

guard case let c = parts.count where c > 1 else { return }