为什么我没有得到任何输出
问题描述:
你好那里我想创建简单的类来获取类间快速的信息流,但在这里我可以看到没有错误没有输出。操场太惊讶地分析这个人:')为什么我没有得到任何输出
import UIKit
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 : Int
init(name :String , sideLength : Double){
super.init (name: name)
self.sideLength = sideLength
numberofSides = 3
}
}
let Square1 = square(name : "square1" , sideLength : 10)
println(Square1.area())
println(Square1.name)
答
两个问题:
变量
sideLength
在triangle
声明为Int
但init
方法具有Double
参数。由于Swift的类型安全,类型必须匹配。- 在
triangle
super.init
必须初始化变量
sideLength
这里后,被称为完整的代码与建议的命名约定,变量和方法开始以小写字母,类,结构和枚举开始用大写字母。
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)
非常感谢您的帮助。你能向我解释为什么三角启动是在sideLength之后。我的意思是,当我切换它的作品,但为什么? :) – dkfloza
'init(name:String)'是类NamesShape的指定初始值设定项。有一条规则(来自文档):*指定的初始化程序必须确保在其委托给超类初始化程序之前,其类所引入的所有属性都被初始化。 – vadian