2015-09-05 60 views
-1

你好那里我想创建简单的类来获取类间快速的信息流,但在这里我可以看到没有错误没有输出。操场太惊讶地分析这个人:')为什么我没有得到任何输出

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) 

回答

0

两个问题:

  • 变量sideLengthtriangle声明为Intinit方法具有Double参数。由于Swift的类型安全,类型必须匹配。

  • trianglesuper.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) 
+0

非常感谢您的帮助。你能向我解释为什么三角启动是在sideLength之后。我的意思是,当我切换它的作品,但为什么? :) – dkfloza

+0

'init(name:String)'是类NamesShape的指定初始值设定项。有一条规则(来自文档):*指定的初始化程序必须确保在其委托给超类初始化程序之前,其类所引入的所有属性都被初始化。 – vadian

相关问题