我试图在swift中使用多态,但我做错了什么;我有以下情况:
class Character : NSNode {
let characterName = "name"
}
class World : NSNode {
let character : NSNode = Character()
// getting error here, NSNode does not have a property "characterName"
character.characterName = "new name"
}
声明类型为Character()的变量的正确方法是什么,但是引用类型为NSNode()?
答案 0 :(得分:3)
(character as Character).characterName = "new name"
Swift的这个功能并不罕见。您已将character
键入为NSNode,因此所有编译器都知道它。要告诉编译器它实际上是什么类型的对象(例如NSNode的子类),你要抛弃它。
您的声明没有任何问题,只要您愿意在每次要访问角色功能时放弃。但是你有没有理由不仅仅打开character
作为角色?毕竟,Swift完全知道这意味着它也是一个NSNode。在我看来,你的多态性概念可能有点颠覆。