访问类函数时Swift中的预期声明错误

时间:2016-02-23 23:33:33

标签: ios xcode swift swift2

我是编码的新手,我正在尝试掌握Swift中的类如何工作。我在Xcode 7.2.1中编写了以下代码,并收到错误'预期声明'它指向第一个字符 $sql = $db->prepare("INSERT INTO db_fruit (`id`, `type`, `colour`) VALUES (:id, :name, :colour)"); $sql->bindParam(':id', $newId, PDO::PARAM_INT); $sql->bindParam(':type', $type, PDO::PARAM_INT); $sql->bindParam(':colour', $colour, PDO::PARAM_STR); $sql->execute();

myFirstCar.refuel()

我希望此代码在类中运行 import UIKit class ViewController: UIViewController { class Car { var weight:Int = 1200 var gas:Int = 100 var maxGas:Int = 1000 func refuel() { if gas < 900 { gas += 100 } else { gas += (maxGas - gas) } } } let myFirstCar = Car() myFirstCar.refuel() } 函数。

我环顾四周,并认为这是refuel()类中函数初始化的问题。我已经尝试初始化类中的每个变量以及初始化函数,但是我收到了指向同一行的相同错误代码。

我现在认为在使用课程时我可能会遗漏一些不同的基本规则。

例如,我不知道Car是否存在问题,因为我的class ViewController: UIViewController包含在其中,可能会使class Car类成为Car的子类?

就像我说的那样,我环顾四周,发现这个代码与我的代码基本相同。

ViewController

如果我将代码复制并粘贴到Xcode中,则会出现相同的错误&#39;预期声明&#39;在这一行:

class Tank {
    class var bonusDamage: Double {
        return Double(Upgrade.level) * 2.5
    }

    let baseDamage = 10.0
    var damage: Double {
        return self.baseDamage + Tank.bonusDamage
    }

    class func upgrade() {
        Upgrade.level += 1
    }

    struct Upgrade {
        static var level = 0
    }
}

var tank = Tank()

println(tank.damage)
// 10.0

Tank.upgrade()

println(tank.damage)
// 12.5

Tank.upgrade()

println(tank.damage)
// 15.0

我猜我真正的问题是我不明白这个错误。如果有人能指出我寻找答案的方向,那将非常感激!

1 个答案:

答案 0 :(得分:1)

问题出现是因为你在错误的地方调用一个函数:

myFirstCar.refuel()

同样地:

println(tank.damage)
// 10.0

Tank.upgrade()

println(tank.damage)
// 12.5

Tank.upgrade()

println(tank.damage)
// 15.0

必须在func范围内调用此内容;例如:

override func viewDidLoad()
{
    super.viewDidLoad()
    // Do any additional setup after loading the view, typically from a nib.

    myFirstCar.refuel()

    /* 

    println(tank.damage)
    // 10.0

    Tank.upgrade()

    println(tank.damage)
    // 12.5

    Tank.upgrade()

    println(tank.damage)
    // 15.0
    */
}

顺便说一句,如果您使用的是Swift 2,则println已重命名为print