Назначение нескольких переменных в Swift

Как назначить несколько переменных в одной строке с помощью Swift?

    var blah = 0
    var blah2 = 2

    blah = blah2 = 3  // Doesn't work???

2 ответов


нет.

это языковая функция для предотвращения стандартного нежелательного побочного эффекта назначения, возвращающего значение, как описано в книге Swift:

в отличие от оператора присваивания в C и Objective-C, оператор присваивания в Swift сам не возвращает значение. Недопустимо следующее утверждение:

   if x = y {
       // this is not valid, because x = y does not return a value
   }

эта функция предотвращает оператор присваивания (=) от используется случайно, когда равен оператору (==) на самом деле задумано. Сделав if x = y неверный, Swift поможет вам избежать таких ошибок в коде.

таким образом, это помогает предотвратить эту чрезвычайно распространенную ошибку. В то время как этот вид ошибки может быть смягчен для других языков-например, с помощью условия Йоды-дизайнеры Swift, по-видимому, решили, что лучше убедиться на уровне языка, что вы не можете стрелять себя в ногу. Но это означает, что вы не можете использовать:

blah = blah2 = 3

если вы отчаянно хотите выполнить задание в одной строке, вы можете использовать синтаксис кортежа, но вам все равно придется специально назначить каждое значение:

(blah, blah2) = (3, 3)

...и я бы не рекомендовал. Хотя это может показаться неудобным поначалу, просто набрав все это-лучший способ пойти, на мой взгляд:

blah = 3
blah2 = 3

как говорится в принятом ответе: вы можете получить более жесткий синтаксис, однако вы не можете назначить из a to b to c без использования нескольких линий (для безопасности, вероятно). Вот пример более краткого синтаксиса для объявления и назначения нескольких переменных в одной строке:

var red, green, blue, alpha : CGFloat
(red, green, blue, alpha) = (0.0, 0.0, 0.0, 0.0)
ledColor.getRed(&red, green: &green, blue: &blue, alpha: &alpha)