【发布时间】:2016-02-23 23:33:33
【问题描述】:
我是编码新手,正在尝试了解类在 Swift 中的工作方式。我在 Xcode 7.2.1 中编写了以下代码并收到错误“预期声明”,它指向行中的第一个字符
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 的子类?
就像我说的,我环顾四周并在网上找到了这段代码,它与我的基本相同。
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
如果我将代码复制并粘贴到 Xcode 中,它会在该行给出相同的错误“预期声明”:
println(tank.damage)
// 10.0
我想我真正的问题是我不明白这个错误。如果有人能指出我寻找答案的方向,那将不胜感激!
【问题讨论】:
-
问题是 Car 类不应该嵌套在 ViewController 类中。理想情况下,将其移出到自己的文件
Car.swift。您似乎也在使用旧版本的 Swift,因为println已被弃用。