Как назначить несколько переменных в одной строке с помощью Swift?
var blah = 0
var blah2 = 2
blah = blah2 = 3 // Doesn't work???
Как назначить несколько переменных в одной строке с помощью Swift?
var blah = 0
var blah2 = 2
blah = blah2 = 3 // Doesn't work???
Нет. Это языковая функция для предотвращения стандартного нежелательного побочного эффекта присваивания, возвращающего значение, как описанного в книге Swift:
В отличие от оператора присваивания в C и Objective-C оператор присваивания в Swift сам не возвращает значение. Следующий оператор недействителен:
if x = y { // this is not valid, because x = y does not return a value }
Эта функция предотвращает случайное использование оператора присваивания (
=
), когда на самом деле предполагается равное оператору (==
). Если makex = y
недействителен, Swift помогает избежать таких ошибок в вашем коде.
Таким образом, это помогает предотвратить эту чрезвычайно распространенную ошибку. Хотя эту ошибку можно смягчить на других языках, например, используя условия Йода, дизайнеры Swift, по-видимому, решили, что лучше понять язык чтобы вы не могли стрелять себе в ногу. Но это означает, что вы не можете использовать:
blah = blah2 = 3
Если вы отчаянно нуждаетесь в выполнении задания в одной строке, вы можете использовать синтаксис кортежа, но вам все равно придется назначать каждое значение:
(blah, blah2) = (3, 3)
... и я бы не рекомендовал его. Хотя сначала может показаться неудобным, просто набрав все это, лучший способ пойти, на мой взгляд:
blah = 3
blah2 = 3
В принятом ответе говорится: вы можете получить более сильный синтаксис, однако вы не можете назначать от a
до b
до 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)