#swift
#swift
Вопрос:
У меня получилось что-то вроде этого:
let index = row.section?.index ?? -1
Что row.section
равно нулю? Пожалуйста, помогите мне понять, как работает эта строка?
Это легко понять locationManager?.startUpdatingLocation()
: метод будет выполнен locationManager
не nil
. Но при назначении необязательной переменной в экземпляр notnull меня сбивает с толку.
Комментарии:
1. это означает, что если row.section? .индекс равен нулю, индекс будет равен -1
2. Что
row.section
равно нулю?
Ответ №1:
Из документации ( https://developer.apple.com/library/content/documentation/Swift/Conceptual/Swift_Programming_Language/BasicOperators.html )
Оператор объединения с нулем (a ?? b) разворачивает необязательный a, если он содержит значение, или возвращает значение по умолчанию b, если a равно нулю. Выражение a всегда имеет необязательный тип. Выражение b должно соответствовать типу, который хранится внутри a.
В этом случае, если row.section равно нулю, все выражение (row.section?.индекс) равен нулю, поэтому индекс будет установлен в -1
Эта строка let index = row.section?.index
должна быть неправильной. Она должна быть обернута в let index = (row.section?.index)!