Мне нужно проверить, будет ли выражение, возвращающее необязательный, nil
. Это похоже на проблему, но вот код.
if nil != self?.checklists.itemPassingTest({ $0 === note.object }) {
…
}
Что по какой-то причине выглядит неприятно для моего глаза.
if let item = self?.checklists.itemPassingTest({ $0 === note.object }) {
…
}
Выглядит намного лучше для меня, но мне действительно не нужен элемент, мне просто нужно знать, был ли он возвращен. Итак, я использовал следующее.
if let _ = self?.checklists.itemPassingTest({ $0 === note.object }) {
…
}
Я пропустил что-то тонкое здесь? Я думаю, что if nil != optional …
и if let _ = optional …
здесь эквивалентны.
Обновить для устранения некоторых проблем в ответах
-
Я не вижу разницы между
nil != var
иvar != nil
, хотя обычно используюvar != nil
. В этом случае нажатие!= nil
после блока получает логическое сравнение блока, смешанного с булевым сравнением if. -
Использование шаблона подстановок не должно быть таким неожиданным или необычным. Они используются в кортежах
(x, _) = (10, 20)
, for-in loopsfor _ in 1...5
, case casecase (_, 0):
и т.д. (ПРИМЕЧАНИЕ: эти примеры взяты из языка Swift Programming).
Этот вопрос касается функциональной эквивалентности двух форм, а не выбора стиля кодирования. Этот разговор может быть сделан на programers.stackexchange.com.
После всего этого времени Swift 2.0 делает его спорным
if self?.checklists.contains({ $0 === note.object }) ?? false {
…
}