【发布时间】:2015-12-28 20:12:45
【问题描述】:
我有两个课程: CatHelper 和 DogHelper 都继承自 DataHelper 并且都只包含类函数。
我想要一本 [DataHelper : [String]] 类型的字典
为此,我让 DataHelper 符合 Hashable + Equatable
但是我很难实例化这样的字典。这是我到目前为止尝试过的
let apiURLS:[DataHelper : [String]] = [CatHelper : ["abc","def"], DogHelper:["ddd"], DogHelper: ["fff"]]
但编译器说“无法将 CatHelper.Type 类型的值转换为 DataHelper 类型的预期字典键”
编辑:
然后,我想遍历这个字典来做,在这个例子中
CatHelper.feed("abc")
CatHelper.feed("def")
DogHelper.feed("ddd")
DogHelper.feed("fff")
在这种情况下,拥有 CatHelper 或 DogHelper 的实例没有用,因为我只使用类函数。
【问题讨论】:
-
编译器再次正确 - 您尝试传入实际的类/类型,而不是它的实例。那是行不通的。如果您提供更多背景信息,我们可能会提出更好的方法。
-
我刚刚编辑了我的问题以提供更多上下文
-
你能详细说明“为什么”吗?您希望一切都是静态的这一事实很痛苦:/
-
好吧,我可以更改为非静态类,但这些是 Helpers,我认为 Helpers 应该是静态的,我看不出这些类是静态的原因
标签: swift inheritance polymorphism static-methods swift-dictionary