对于粗略的标题感到抱歉,但是我正在teamtreehouse.com上为Swift上课,我做了一个“代码挑战”,重新开始了面向对象的Swift课程。无论如何,我提供了几个类,我的目标是子类化Machine类并覆盖实际做某事的方法,我做了。我通过了挑战但很奇怪我是否可以在传入参数后实际打印出该函数的最终结果。
class Point {
var x: Int
var y: Int
init(x: Int, y: Int) {
self.x = x
self.y = y
}
}
class Machine {
var location: Point
init() {
self.location = Point(x: 0, y: 0)
}
func move(_ direction: String) {
print("Do nothing! I'm a machine!")
}
}
// Enter your code below
class Robot: Machine {
override func move(_ direction: String) {
switch direction {
case "Up": location.y += 1
case "Down": location.y -= 1
case "Left": location.x -= 1
case "Right": location.x += 1
default: break
}
}
}
let aRobot = Robot()
aRobot.move("Up")
print(aRobot.location)
所以,最后3行是我尝试实际管理它,但在控制台中,打印了“Point”行,而不是正在制定的方法的实际结果。如果可能的话,我希望以坐标的形式打印结果。对于可能不好的代码,我很抱歉,我只是一个初学者。提前谢谢!
答案 0 :(得分:0)
为了能够在swift中打印类型,您需要此类型符合CustomStringConvertible
协议。该协议只有一个要求,即实现description
var
extension Point: CustomStringConvertible {
var description: String {
return "(\(x), \(y))"
}
}