Присвойте булевское значение нескольким свойствам в Swift [duplicate]

32
задан Matt Gibson 2 October 2014 в 08:48
поделиться

2 ответа

У вас нет.

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

В отличие от оператора присваивания в C и Objective-C, оператор присваивания в Swift сам не возвращает значение. Следующая инструкция недействительна:

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

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

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

blah = blah2 = 3

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

(blah, blah2) = (3, 3)

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

blah = 3
blah2 = 3
59
ответ дан Jack 31 August 2018 в 19:16
поделиться
2
ответ дан Dan Rosenstark 31 August 2018 в 19:16
поделиться
Другие вопросы по тегам:

Похожие вопросы: