Быстрая проблема с приоритетом оператора - PullRequest
0 голосов
/ 07 декабря 2018

ОБНОВЛЕНО

Выражение: a ?? 0 + b, где a равно CGFloat?, b равно CGFloat и a != nil.

Бетонпример:

//a == 99
//b == 253
let t = ((a ?? 0) + b)
let t2 = (a ?? 0 + b)
//t == 352
//t2 == 99

Почему результат правильный, если я устанавливаю только скобки: (a ?? 0) + b

1 Ответ

0 голосов
/ 07 декабря 2018

Оба результата являются «правильными». Они могут отличаться, потому что + имеет более высокий приоритет, чем ??.В частности, если a != nil:

 t  == (a ?? 0) + b == a! + b
 t2 == (a ?? 0 + b) == a ?? (0 + b) == a!

Полный список приоритетов операторов можно найти по адресу Объявления операторов .

...