初始化函数中的Swift嵌套类型

时间:2018-10-26 14:50:01

标签: swift

我有一个描述某些结构的嵌套类型对象:

class Car {
   class Electro {
       class 2WheelDrive {
       }
       class 4WheelDrive {
       }
   }
}

我想将该对象用作签名如下的另一个对象的init函数中的参数:

init(car: Car)

但是,当我尝试使用Car.Electro.4WheelDrive参数调用此init函数时,出现错误:

  

”无法将类型“ Car.Electro.4WheelDrive”的值转换为预期值   参数类型“汽车””。

我应该使用哪个初始化函数签名(init(car: Any)除外)才能使用Car.Electro.4WheelDrive之类的参数?

1 个答案:

答案 0 :(得分:4)

您的代码创建四个类:

  • 汽车
  • Car.Electro
  • Car.Electro.2WheelDrive(我认为这不合法;必须以字母开头)
  • Car.Electro.4WheelDrive

这些是不相关的类;他们唯一的共同点是命名空间。 Car.Electro不是Car的子类。如果要成为,则需要声明它。

您可能根本不打算将它们嵌套。您可能打算使它们成为子类:

class Car {}
class ElectroCar: Car {}
class TwoWheelDriveElectroCar: ElectroCar {}
class FourWheelDriveElectroCar: ElectroCar {}

如果愿意,您仍然可以嵌套它们:

class Car {
   class Electro: Car {
       class TwoWheelDrive: Electro {
       }
       class FourWheelDrive: Electro {
       }
   }
}

这只是更改他们的姓名,而不是他们的关系。

相关问题