2016-01-20 1 views
0

Я новичок в Swift и пытаюсь изучить концепцию необязательных значений. Мой вопрос заключается в том, что в контексте кода до этого необходимо установить переменную 'possibleIntegerValue' в 'необязательный Int (Int?)' Или это нормально опустить? знак и установить 'possibleIntegerValue' вместо типа 'Int'? Какое влияние это делает, если я действительно изменяю тип от опционального Int до Int? Заранее благодарю за любую помощь!необходимо установить переменную 'possibleIntegerValue' в 'необязательный Int (Int?)' Или нормально установить 'possibleIntegerValue' вместо типа 'Int'?

let numberSymbol: Character = "三" // Simplified Chinese for the number 3 
var possibleIntegerValue: Int? 
switch numberSymbol { 
case "1", "١", "一", "๑": 
    possibleIntegerValue = 1 
case "2", "٢", "二", "๒": 
    possibleIntegerValue = 2 
case "3", "٣", "三", "๓": 
    possibleIntegerValue = 3 
case "4", "٤", "四", "๔": 
    possibleIntegerValue = 4 
default: 
    break 
} 
if let integerValue = possibleIntegerValue { 
    print("The integer value of \(numberSymbol) is \(integerValue).") 
} else { 
    print("An integer value could not be found for \(numberSymbol).") 
} 
+1

Вам нужно будет присвоить ему 0 или значение по умолчанию вместо того, чтобы оставить его nil –

+1

Вы можете оставить его как есть. possibleIntegerValue: Int? И, очевидно, вам нужно, чтобы это было нуль, если ни один из случаев переключения не соответствовал номеру символа. – Shripada

ответ

3

Опционы позволяют вам иметь случай, когда нет значения. У вас есть следующие варианты для объявления переменного:

var possibleIntegerValue: Int?  // Optional Int 
var possibleIntegerValue: Int = 0 // Not optional but must *always* have a value 
var possibleIntegerValue: Int!  // Implicitly unwrapped Optional Int 

В третьем варианте выше, вы гарантируете, что possibleIntegerValue будет иметь значение к тому времени он впервые использовал (или ваше приложение будет врезаться с неперехваченным исключением) ,

Поскольку ваш оператор switch имеет default, который не дает possibleIntegerValue значение, использование опции Int Int представляется уместным.

Смежные вопросы