Как объявить изменчивые переменные в Swift

Я хочу преобразовать в Swift из Objective-C кода, например:

int sum = 0;
x = 1;
for (int i = 0; i < 100; i++) {
    sum += x;
}

x доступен из других потоков. Таким образом, x объявляется как изменчивая переменная.

volatile int x;

Как написать этот код в Swift?

Ответ 1

Если вы хотите использовать x из любого места, вам нужно написать эту переменную следующим образом: var x = 0

  • Оригинальный код:

int sum = 0; х = 1; для (int i = 0; i & lt; 100; i++) {sum + = x; }

Обновленный код:

var sum = 0 x = 1 для (i в 0.. & lt; 100) {sum = sum + x}

  • var sum = 0 Вы можете определить эту переменную в любом месте класса или за его пределами.
  • let sum = 0 Вы не сможете редактировать это значение.

Дайте нам знать, если какая-то путаница здесь.

Ответ 2

В Swift у вас есть доступ к более мощным средствам выражения глобальной синхронности значений, особенно на уровне типа, чем ключевое слово volatile. Например, вы можете выбрать блокировки для синхронизации доступа для чтения и записи к переменной. Вы можете использовать MVar, чтобы указать, что переменная должна иметь только 1 допустимое состояние для нескольких потоков. Или вы можете просто не указывать проблему в Swift. Поскольку язык вытесняет изменчивые квалификаторы из импортированного кода, кажется, что приложения, которые хотят использовать эту функцию, должны придерживаться использования C или Objective-C и представлять интерфейс для любого заинтересованного кода Swift.