我正在尝试做这个练习。我一直在收到错误。
"创建一个Triangle类,其属性用于存储每边的长度。当三边长度不同时,三角形称为斜角,当两边长度相同时,三角形称为等腰,或者当三边长度相同时,三角形称为等边。为您的类创建一个初始化程序,它接受三个参数并正确设置类属性。接下来,创建第二个初始化器,以便在三角形为等边时使用。请记住,所有三个边都是相同的长度,所以这个方法应该只接受一个参数,但仍然应该设置所有三个属性。
我的代码:
class Triangle {
var sideA: Int
var sideB: Int
var sideC: Int
init(sideA: Int, sideB: Int, sideC: Int) {
self.sideA = sideA
self.sideB = sideB
self.sideC = sideC
}
override convenience init() {
//I can figure this part out, no problem.
}
// I cannot figure out the next part.
答案 0 :(得分:1)
因为你说你可以自己弄清楚方便的内部:
将一个参数添加到您的便利init中,删除override
除非您覆盖某些内容(看起来不像),然后使用}
关闭类定义。你完成了。
答案 1 :(得分:1)
你似乎被困在了方便的初始部分。
正如问题所示,等边三角形的初始化器应该有1个参数,所以让我们加一个:
convenience init(sideLength: Int) {
}
每个便利初始化程序必须调用指定的构造函数或其他便利构造函数。在这种情况下,您可以调用另一个带有3个参数的指定构造函数。
convenience init(sideLength: Int) {
self.init(sideA: ???, sideB: ???, sideC: ???)
}
你差不多完成了。你只需要弄清楚参数。
我想在这一点上你可以猜出这三个参数是什么。快去吧!
在这里回答:
self.init(sideA: sideLength, sideB: sideLength, sideC: sideLength)
答案 2 :(得分:1)
所以你需要提供一个初始化器来创建一个等边三角形
class Triangle {
var sideA: Int
var sideB: Int
var sideC: Int
init(sideA: Int, sideB: Int, sideC: Int) {
self.sideA = sideA
self.sideB = sideB
self.sideC = sideC
}
convenience init(equilateralWithEdge edge:Int) {
self.init(sideA: edge, sideB: edge, sideC:edge)
}
}
现在你可以建立一个等边三角形写作
let triangle = Triangle(equilateralWithEdge: 10)
测试
triangle.sideA // 10
triangle.sideB // 10
triangle.sideC // 10