Быстрые основы! & ?

Я только начинаю изучать Swift, и я видел разные переменные, которые имеют ! или ? прикреплены к концу, что означает, что они необязательны или нет.

let interestingNumbers = [
     "Prime": [2, 3, 5, 7, 11, 13],
     "Fibonacci": [ 1, 1, 2, 3, 5, 8],
     "Square": [ 1, 4, 9, 16, 25]
]
    var largest = 0
    var type: String?
for (kind, numbers) in interestingNumbers {
    for number in numbers {
        if number>largest {
        largest = number
            type = kind
        }
    }
}
println("Largest: \(largest) Kind: \(type)")

Я получаю результаты «Самый большой: 25 Тип: необязательно («Квадрат»)»

Что именно означает необязательный параметр и как я могу это исправить, чтобы он просто отображал «Квадрат»?


person Chris    schedule 20.05.2015    source источник


Ответы (1)


Переменная type имеет необязательный тип String (строка?). Она может иметь значение или просто быть нулевой.

Вы должны развернуть его, если оно имеет значение, и вы можете использовать оператор объединения nil (??), чтобы развернуть необязательный элемент, если он содержит значение, или вернуть значение по умолчанию, если оно равно nil. Например:

let unknownType = "Unknown"
println("Largest: \(largest) Kind: \(type ?? unknownType)")  // Largest: 25 Kind: Square
person tounaobun    schedule 20.05.2015
comment
Это потому, что ваш тип переменной равен нулю. - person tounaobun; 20.05.2015