假设我确实有一个符合input_shape=(timesteps,dim)
的协议TestProtocol
和类TestClass1
和TestClass2
:
TestProtocol
进一步假设我确实有一个像这样定义的元类型数组
protocol TestProtocol: AnyObject { }
class TestClass1: TestProtocol { }
class TestClass2: TestProtocol { }
如何基于var testArray: [TestProtocol.Type] = [TestClass1.self, TestClass2.self]
的条目创建TestClass1
和TestClass2
的实例对象?
p.s .:应该在没有创建像{p>一样再次检查testArray
和TestClass1.self
的开关结构的情况下完成此操作
TestClass2.self
我研究了泛型,但是没有找到合适的解决方案,因为元类型存储在var instanceArray: [TestProtocol] = []
for element in testArray {
if element == TestClass1.self {
instanceArray.append(TestClass1())
} else if element == TestClass2.self {
instanceArray.append(TestClass2())
}
}
类型的数组中。
答案 0 :(得分:3)
这有效:
protocol TestProtocol: AnyObject {
init()
}
final class TestClass1: TestProtocol { }
final class TestClass2: TestProtocol { }
var testArray: [TestProtocol.Type] = [TestClass1.self, TestClass2.self]
for testType in testArray {
let testInstance = testType.init()
}
final classes
也可以是structs
(但您需要删除AnyObject
约束)
您能告诉我它是否为您编译吗?如果没有,则需要更新工具链。