Назначение нескольких переменных в 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 }
эта функция предотвращает оператор присваивания (
=
) от используется случайно, когда равен оператору (==
) на самом деле задумано. Сделав ifx = 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)