我已经制作了一个自定义类工具Collection,效果很好!我基本上只是转发我的内部数组类并免费获取map / filter / etc,但现在我有一个方法如下:
init(items: [T])
{
self.items = items
}
如何将自定义对象传递给此?签名应该是什么?我知道我的班级不是一个阵列。
答案 0 :(得分:1)
一种解决方案是将Array(yourCustomCollection)
传递给。{
现有init(items: [T])
。
或者,定义一个采用T
元素集合的init方法:
class MyClass<T> {
var items: [T] = []
init<C: Collection>(items: C) where C.Element == T {
self.items = Array(items)
}
}
或稍微更一般,T
元素的序列:
class MyClass<T> {
var items: [T] = []
init<S: Sequence>(items: S) where S.Element == T {
self.items = Array(items)
}
}
或者,如果您希望items
成为集合,而不是数组:
class MyClass<C: Collection> {
var items: C
init(items: C) {
self.items = items
}
}
答案 1 :(得分:0)
如果您的items
实施Collection
,那么您可以让init
获得Collection
:
init(items: Collection) {
self.items = items
}