2015-06-13 2 views
0

мне было интересно, что делает этот код:Swift присвоений внутри условия

var something: String = "Hi" 

if something = "Hello world!" { 
    // Will this be executed? 
} 

Будет ли назначить something переменной и сделать if тело? Или он установит значение этой переменной только для тела if и вне его не изменится? Или это имеет какое-либо отношение к nil?

+1

TIAS: попробуйте и посмотрите! Либо введите «swift» в командной строке, либо перейдите по адресу http://swiftstub.com/ –

ответ

1

Эта модель работает только для заданий, которые могут не - то есть, если вы присваиваете результат выражения, возвращающего Факультативный стоимость. И в этом случае вы используете if let, а не только if.

2

Назначения не являются выражениями, которые возвращают логические значения, поэтому не могут использоваться внутри if следующим образом. Так что это не скомпилируется.

(хотя вы получите сообщение вводит в заблуждение компилятор)

assignment in if failing to compile

+0

С совершенно бесполезным сообщением об ошибке. Но это все еще не скомпилируется, если мы скажем «если что-то = funcThatReturnsOptionalString() {' ...? – nhgrif

+0

@nhgrif Ваше предложение не будет выполнено, потому что вам не хватает ключевого слова 'let'. Если вы создадите функцию, которая возвращает 'String? ', Вам придется развернуть это необязательное. – cojoj

0

мы не можем использовать оператор присваивания для, если условия, то вы бы если позволить предположит, если вы работаете с дополнительными типами

Вот некоторые операторы, которые помогают вам получить ясность отличить от оператора присваивания

= assignment operator 
== is equal to 
=== is identical to 
Смежные вопросы