Swift 为什么我得不到任何输出
您好,我正在尝试创建简单的类,以便在swift中获得类之间的信息流,但在这里我看不到任何错误或输出。操场太惊讶了,无法分析这个人:') 两个问题:Swift 为什么我得不到任何输出,swift,class,object,Swift,Class,Object,您好,我正在尝试创建简单的类,以便在swift中获得类之间的信息流,但在这里我看不到任何错误或输出。操场太惊讶了,无法分析这个人:') 两个问题: triangle中的变量sideLength声明为Int,但是init方法有一个Double参数。由于Swift的类型安全性,类型必须匹配 在trianglesuper.init中,在初始化变量边长后必须调用 这里是完整的代码,包括推荐的命名约定、以小写字母开头的变量和方法、以大写字母开头的类、结构和枚举 import Foundation c
中的变量triangle
声明为sideLength
,但是Int
方法有一个init
参数。由于Swift的类型安全性,类型必须匹配Double
- 在
triangle
中,在初始化变量super.init
边长后必须调用
import Foundation
class NamesShape {
var numberofSides : Int = 0
var name : String
init(name : String) {
self.name = name
}
func simpleDescription() -> String{
return "the shape name is : \(name) "
}
}
class Square : NamesShape {
var sideLength : Double
init(name : String , sideLength : Double) {
self.sideLength = sideLength
super.init(name: name)
numberofSides = 4
}
func area() -> Double{
return sideLength * sideLength
}
}
class Triangle : NamesShape {
var sideLength : Double
init(name : String, sideLength : Double) {
self.sideLength = sideLength
super.init(name: name)
numberofSides = 3
}
}
let square1 = Square(name : "square1" , sideLength : 10)
print(square1.area())
print(square1.name)
非常感谢你的帮助。你能解释一下为什么三角形起始点在边长之后很重要吗。我的意思是,当我切换它们时,它会工作,但为什么呢?:)
init(name:String)
是类NamesShape
的指定初始值设定项。有一条规则(来自文档):指定的初始值设定项必须确保其类引入的所有属性都已初始化,然后才能委托给超类初始值设定项。
import Foundation
class NamesShape {
var numberofSides : Int = 0
var name : String
init(name : String) {
self.name = name
}
func simpleDescription() -> String{
return "the shape name is : \(name) "
}
}
class Square : NamesShape {
var sideLength : Double
init(name : String , sideLength : Double) {
self.sideLength = sideLength
super.init(name: name)
numberofSides = 4
}
func area() -> Double{
return sideLength * sideLength
}
}
class Triangle : NamesShape {
var sideLength : Double
init(name : String, sideLength : Double) {
self.sideLength = sideLength
super.init(name: name)
numberofSides = 3
}
}
let square1 = Square(name : "square1" , sideLength : 10)
print(square1.area())
print(square1.name)