Что делает arc4random_uniform() в условном выражении?

#swift #arc4random

#swift #arc4random

Вопрос:

Этот код передает 3 в качестве аргумента arc4random_uniform() функции, и я предполагаю, что он возвращает true или false . Затем вы присваиваете перечислитель переменной. Однако я не понимаю, что делает функция.

 let randomState = arc4random_uniform(3) == 2 ? CellState.Alive :
                    CellState.Empty
let cell = Cell(grid: self,
                pos: (i, j),
                state: randomState)
  

Я не следую этой логике.

Комментарии:

1. Что именно вы не понимаете? Или, лучше, что вы понимаете?

2. Я предполагаю, что вы передаете 3 в качестве аргумента функции, и она возвращает true или false . Затем вы присваиваете перечислитель переменной. Вопрос только в том, что делает функция

3. arc4random_uniform(3) возвращает случайным образом 0, 1 или 2. Итак, он говорит, что если случайное число равно 2 (вероятность 33,33%), оно будет использовать CellState. В противном случае оно равно 0 или 1 (вероятность 66,66%), это будет состояние ячейки. Пусто

Ответ №1:

Это «arc4random_uniform(3) == 2 ? Состояние ячейки.Alive : состояние ячейки.Пустой» формат, который вы не понимаете? Он записывается как условный (троичный) оператор:

условие ? выражение 1: выражение 2

В принципе, если функция arc4random_uniform(3) == 2, пусть RandomState == CellState .Активен, в противном случае пусть RandomState == CellState .Пусто.