Swift 为什么我得不到任何输出

Swift 为什么我得不到任何输出,swift,class,object,Swift,Class,Object,您好,我正在尝试创建简单的类,以便在swift中获得类之间的信息流,但在这里我看不到任何错误或输出。操场太惊讶了,无法分析这个人:') 两个问题: triangle中的变量sideLength声明为Int,但是init方法有一个Double参数。由于Swift的类型安全性,类型必须匹配 在trianglesuper.init中,在初始化变量边长后必须调用 这里是完整的代码,包括推荐的命名约定、以小写字母开头的变量和方法、以大写字母开头的类、结构和枚举 import Foundation c

您好,我正在尝试创建简单的类,以便在swift中获得类之间的信息流,但在这里我看不到任何错误或输出。操场太惊讶了,无法分析这个人:')

两个问题:

  • triangle
    中的变量
    sideLength
    声明为
    Int
    ,但是
    init
    方法有一个
    Double
    参数。由于Swift的类型安全性,类型必须匹配

  • 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)