Свифт эквивалент этой строки кода ActionScript? - PullRequest
0 голосов
/ 25 сентября 2018

Я перевожу код ActionScript из этого руководства по разработке в swift, потому что пытаюсь научить себя BSP.Я наткнулся на строку кода, которую я не до конца понимаю.

var splitH:Boolean = FlxG.random() > 0.5;

Каким-то образом они приводят целое число как логическое значение.Что будет быстрым эквивалентом этой линии?Это не имеет никакого смысла для меня.Как они приводят случайное значение как логическое значение?Свифт не допускает такого рода «скрещивания».

Это моя попытка до сих пор:

var splitH = Int(arc4random_uniform(2) + 1)
var splitB = false

Я разделил строку на два значения, потому что я не знаю, как сделать это одной строкой.Это правильный подход?

Это не работает:

var splitH:Bool = Int(arc4random_uniform(2) + 1)

Ответы [ 2 ]

0 голосов
/ 25 сентября 2018

Примечание: при условии, что FlxG.random() возвращает равномерное случайное число между 0.0 и 1.0.Если у него другое распределение, он не будет работать, ofc.

Если мы говорим о версии до 4.2, Swift эквивалентна:

let splitH: Bool = arc4random_uniform(2) == 1

В Swift 4.2+ вы можетепросто используйте что-то вроде этого:

let splitH: Bool = Double.random(in: 0.0 ..< 1.0) > 0.5
0 голосов
/ 25 сентября 2018

Здесь вы также можете использовать троичный оператор.

Что-то вроде

var splitH = arc4random_uniform(100) > 50 ? true : false

или просто

var splitH = arc4random_uniform(100) > 50
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...