以字符串为键、通用 Class 为值的字典
Dictionary with String as Key and Generic Class as value
我有插座和插头,插头是任何通用类型的。现在我想将任何类型的插头存储到字典中。我试图以我能想到的所有方式在字典中声明插件的可能类型。 None 成功了。我只找到传递任何值 T 的解决方案,而不是任何泛型类型的 class。我也担心我的用词在所有情况下都不正确。我说错了什么?
例子会把事情搞清楚。
那么我如何将这个插件存储到套接字的字典 "plugs" 中:
import Foundation
class AClass {
}
class BClass {
}
class Plug<T> {
init() {
}
}
class Socket {
var plugs = [ String: Plug ]() // should accept any Plug
init() {
}
func addPlug( plug : Plug ) { // should accept any Plug
self.plugs["A"] = plug // should accept any Plug
}
}
var plugDouble = Plug<Double>()
var plugString = Plug<String>()
var plugAClass = Plug<AClass>()
var plugBClass = Plug<BClass>()
var socket = Socket()
socket.addPlug(plug: plugDouble ); // should accept any Plug
socket.plugs["A"] = plugDouble // should accept any Plug
创建一个基础 class(我们称之为 BasePlug
),所有 Plug
classes 都将派生自该基础。让你的字典存储 class BasePlug
:
的项目
class BasePlug {
}
class AClass {
}
class BClass {
}
class Plug<T> : BasePlug {
}
class Socket {
var plugs = [ String: BasePlug ]() // should accept any Plug
init() {
}
func addPlug( plug : BasePlug ) { // should accept any Plug
self.plugs["A"] = plug // should accept any Plug
}
}
var plugDouble = Plug<Double>()
var plugString = Plug<String>()
var plugAClass = Plug<AClass>()
var plugBClass = Plug<BClass>()
var socket = Socket()
socket.addPlug(plugDouble ); // should accept any Plug
socket.plugs["A"] = plugDouble // should accept any Plug
我有插座和插头,插头是任何通用类型的。现在我想将任何类型的插头存储到字典中。我试图以我能想到的所有方式在字典中声明插件的可能类型。 None 成功了。我只找到传递任何值 T 的解决方案,而不是任何泛型类型的 class。我也担心我的用词在所有情况下都不正确。我说错了什么?
例子会把事情搞清楚。 那么我如何将这个插件存储到套接字的字典 "plugs" 中:
import Foundation
class AClass {
}
class BClass {
}
class Plug<T> {
init() {
}
}
class Socket {
var plugs = [ String: Plug ]() // should accept any Plug
init() {
}
func addPlug( plug : Plug ) { // should accept any Plug
self.plugs["A"] = plug // should accept any Plug
}
}
var plugDouble = Plug<Double>()
var plugString = Plug<String>()
var plugAClass = Plug<AClass>()
var plugBClass = Plug<BClass>()
var socket = Socket()
socket.addPlug(plug: plugDouble ); // should accept any Plug
socket.plugs["A"] = plugDouble // should accept any Plug
创建一个基础 class(我们称之为 BasePlug
),所有 Plug
classes 都将派生自该基础。让你的字典存储 class BasePlug
:
class BasePlug {
}
class AClass {
}
class BClass {
}
class Plug<T> : BasePlug {
}
class Socket {
var plugs = [ String: BasePlug ]() // should accept any Plug
init() {
}
func addPlug( plug : BasePlug ) { // should accept any Plug
self.plugs["A"] = plug // should accept any Plug
}
}
var plugDouble = Plug<Double>()
var plugString = Plug<String>()
var plugAClass = Plug<AClass>()
var plugBClass = Plug<BClass>()
var socket = Socket()
socket.addPlug(plugDouble ); // should accept any Plug
socket.plugs["A"] = plugDouble // should accept any Plug