Как мне назначить Y на X? - PullRequest
0 голосов
/ 11 апреля 2020

Я не мог понять, как скопировать значение переменной в другую переменную в Swift, пример кода для этого в python будет

def assignVariable():
    x=1
    y=x
    return y
RESULT 1

Когда я это сделал, кажется, что работать в Swift. Есть ли какое-то решение для этого, или я делаю что-то не так?

Редактировать: проблема в

var originalCount=countDown

, это дало мне Use of unresolved identifier 'countDown', но когда я назначаю это буквально, это работает. Вот мой быстрый код

import Cocoa

class MainWindow: NSWindowController {
    var hitCount = 0
    var started:Bool = false
    var timer = 10
    var colorList: [NSColor] = [ NSColor.black,NSColor.blue,NSColor.brown,NSColor.cyan,NSColor.darkGray,NSColor.gray,NSColor.green,NSColor.lightGray,NSColor.magenta,NSColor.orange,NSColor.purple,NSColor.red,NSColor.white,NSColor.yellow]
    @IBOutlet weak var button1: NSButton!
    @IBOutlet weak var scrubber1: NSScrubber!
    @IBOutlet weak var display: NSTextField!

    override func windowDidLoad() {
        super.windowDidLoad()
        // Implement this method to handle any initialization after your window controller's window has been loaded from its nib file.
    }
    var countdown=10
    var originalCount=countDown
    //(countdown,originalCount) = (10,10) //it works if i use this instead
    func startGame(){
        if(countDown>0 || started==true){
            display.stringValue=String(countDown)
            countDown-=1
            let seconds = 1.0
                 DispatchQueue.main.asyncAfter(deadline: .now() + seconds) {
                    self.startGame()
                 }
        }else{
            display.stringValue="Done "+String(hitCount)+" Taps in " + String(originalCount) + "Tap to RESET"
            started=false
            countDown=10;
        }
    }
    @IBAction func labelPress(_ sender: Any) {
        display.stringValue="__RESET__"
        hitCount=0
        countDown=10
        started=false
    }
    @IBAction func buttonPressed(_ sender: Any) {
        if started==false{
            startGame()
        }
        button1.bezelColor = colorList[Int.random(in: 0..<colorList.count)]
        started=true
        button1.title=String(hitCount)
        hitCount+=1
    }
}

1 Ответ

0 голосов
/ 11 апреля 2020

Вы не можете инициализировать одну переменную с другой на верхнем уровне в вашем классе. Глядя на ваш код, я не думаю, что originalCount должен быть свойством, вместо этого переместите его внутрь startGame() и сделайте его локальной переменной, а также используйте let, поскольку оно не меняется

var countdown=10

func startGame(){
    let originalCount = countDown
    if(countDown>0 || started==true){
        ...
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...