Начал читать документацию по свифту и вот первый вопрос
Вот есть код
var optionalString: String? = "Hello"
print(optionalString == nil)
var optionalName: String? = "John Appleseed"
var greeting = "Hello!"
if let name = optionalName {
greeting = "Hello, \(name)"
}
И вот вопросы :
var optionalString: String? = "Hello"- написано, что мы ставим?, чтоб отметить что это присвоение не обязательноеWrite a question mark (?) after the type of a value to mark the value as optional.
Что значит не обязательное? В смысле если я хочу оставить это значение пустым, вот так var optionalString: String? = "" ?
- Теперь вот это условие
if let name = optionalName. Я так это вижу создается переменнаяlet nameи еслиoptionalNameне равноnil(я так понимаю, что это тоже самое, что в javanull) , то условие работает.
Но тогда если это проверка на nil почему нельзя было написать, что то вроде if optionalName != nil? Зачем создавать лишнюю переменную?
- И последнее "Hello, (name)", я так понял, что вот такой синтаксис
\()мы используем когда хотим сконвертировать допустимintвString
Но зачем мы его используем в этом примере, когда у нас явно все в Sring-ах?
var hello:String? = "123"нужно ли указывать?если мы все равно явно сразу присваиваем значение? 2) По вопросу №3 мой вопрос был в том, что не совсем понятно зачем указывать\()если явно все в стрингах? Для сравнения в javasout("Hello" + String.valeuOf(34));так вотString.valeuOf(34)указываем для того чтоб привести типintвString, но если бы мы передавали сразу стринг то приводить не нужно было бы вот такsout("Hello" + "34");Но в свифт я так понял не имеет значения какой тип всегда ставим\(), так? – Sirop4ik Oct 23 '16 at 14:09print("\(2+3)")выведет "5" а не "(2+3)"let name = "Max" print ("hello " + name). ? Компилятор поймет , чтоnameтоже являетсяString? Компилятор просто сможет присоединитьStringкSring? – Sirop4ik Oct 23 '16 at 15:59"next year \(name) will be \(age+1)"или"next year " + name + "will be " + String.valueOf(age+1)"– Max Mikheyenko Oct 23 '16 at 16:28