【问题标题】:Class func for create subclass objects in Swift用于在 Swift 中创建子类对象的类函数
【发布时间】:2018-03-05 11:27:26
【问题描述】:

我有“class func create()”的动物类:

class func create<T>() -> T {
    let animal = Animal() as! T
    return animal
}

我有狗的子类:

class Dog: Animal { }

我使用 create() 来创建子类对象:

let doggy: Dog = Dog.create()

但如果我这样创造小狗:

let doggy = Dog.create()

我有错误“无法推断通用参数'T'” 如何设置根据调用者类型推断的动态类型?

【问题讨论】:

  • 你为什么不创建一个常规的初始化器?您应该只创建一个 Animal 协议并使用结构而不是子类化
  • protocol Animal { var weight: Int { get } } struct Dog: Animal { let weight: Int } let doggy = Dog(weight: 10)
  • protocol Animal { static func create() -&gt; Self } struct Dog: Animal { static func create() -&gt; Dog { return Dog() } } let doggy = Dog.create()

标签: ios swift generics


【解决方案1】:

这一行:

let doggy = Dog.create()

声明一个常量,但没有明确命名它的类型,但是 create 函数需要它。试试:

let doggy: Dog = Dog.create()

【讨论】:

    猜你喜欢
    • 2015-09-26
    • 2015-11-17
    • 2015-03-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-06
    • 1970-01-01
    • 2015-05-14
    相关资源
    最近更新 更多