【发布时间】:2021-10-14 11:39:01
【问题描述】:
我是一名 C# 程序员,试图了解 Swift 的类型系统。下面的代码定义了一个带有访问器getTypeOfFruit() 的超类fruit。我希望它返回实例化类型而不是超类的类型。
旁白:有没有关于 Swift 类型系统的高级文档?我遇到的大部分内容都只涉及基础知识。
public class Fruit {
private var fruitType = Fruit.Type.self // generic fruit type
public func getTypeOfFruit<T>() -> T.Type {
return fruitType as! T.Type //
}
}
public class Apple: Fruit {
}
public class TimApple: Apple {
}
var fruit = Fruit.self // error: Instance member 'getTypeOfFruit' cannot be used
print(fruit.getTypeOfFruit()) // should print "Fruit"
var fruit = Apple.self
print(fruit.getTypeOfFruit()) // should print "Apple"
fruit = TimApple.self
print(fruit.getTypeOfFruit()) // should print "TimApple"
【问题讨论】: