Объявить переменную без типа
Я делаю игру, и у меня есть разные режимы игры. Эти режимы игры в отдельных классах. Когда пользователь выбирает режим игры, в коде используется соответствующий класс. Однако для манипулирования любым игровым режимом я использовал сцену. Есть ли способ использовать одну переменную или мне нужно использовать несколько?
Вот ViewController, который имеет дело с режимами игры:
class GameViewController: UIViewController {
let classic = GameScene(fileNamed: "GameScene")
let timed = Timed(fileNamed: "Timed")
let endless = Endless(fileNamed: "Endless")
var scene: SKScene?
init() {
if (gameMode == "Classic"){
var scene = classic
print("Classic")
}
else if (gameMode == "Timed"){
var scene = timed
print("Timed")
}
else if (gameMode == "Endless"){
var scene = endless
print("Endless")
}
}
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if let yourVC = segue.destination as? Postgame {
yourVC.score = scene!.score
}
}
2 ответа
Теоретически, вы можете пойти с:
var score: Any!
Any
означает что угодно, любой тип.
Помимо этого, кажется, что вы ищете (и в основном говорите о) шаблон проектирования стратегии. Кажется, это правильный способ решить вашу задачу. Вкратце: определите протокол, реализуйте его всеми вашими стратегиями, используйте ту, которая вам нужна, вызывайте методы по унифицированным протоколом именам.
Прочитайте: Шаблон дизайна стратегии в Swift
Переменная Swift должна иметь тип. Иначе как бы компилятор узнал, что с ним можно сделать?
В этом случае, по-видимому, имеет score
свойство, поэтому вы должны составить протокол с этим:
protocol GameMode {
var score: Int { get }
// and whatever else is common to these classes
}