我是编码的新手,我正在尝试掌握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
我猜我真正的问题是我不明白这个错误。如果有人能指出我寻找答案的方向,那将非常感激!
答案 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
。