Мне нужно проверить, будет ли выражение, возвращающее необязательный, 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 {
…
}