Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 在Swift中初始化固定大小数组时出现类型错误_Arrays_Swift_Hashtable - Fatal编程技术网

Arrays 在Swift中初始化固定大小数组时出现类型错误

Arrays 在Swift中初始化固定大小数组时出现类型错误,arrays,swift,hashtable,Arrays,Swift,Hashtable,我正在使用链表实现哈希表。 总共有3节课 class HashNode<Key: Hashable, Value> { var key: Key var value: Value var next: HashNode? init(key: Key, value: Value) { self.key = key self.value = value

我正在使用链表实现哈希表。 总共有3节课

    class HashNode<Key: Hashable, Value> {
        var key: Key
        var value: Value
        var next: HashNode?

        init(key: Key, value: Value) {
            self.key = key
            self.value = value
        }
    }

    class HashTableBucket<Key: Hashable, Value> {
        typealias Node = HashNode<Key, Value>
        var head: Node?
        var tail: Node?

        func addNode(newNode: Node) {
            //code
        }

        func findNode(key: Key) -> Node?{
             //code
        }
}

struct HashTable<Key: Hashable, Value> {
    private typealias Bucket = HashTableBucket<Key, Value>
    private var buckets: [Bucket]

    private(set) public var count = 0
    private(set) public var capacity = 0

    init(capacity: Int) {
        assert(capacity > 0)
        buckets = Array<Bucket>(repeating: [], count: capacity)
    }

    //other code
}

我做错了什么?

重复:参数是数组元素类型的一个实例, e、 g

由于自动类型推断

但是,(正如您同时注意到的:)
Bucket
是一个类,这将创建一个数组,其中包含对同一对象实例的多个引用,这不是您想要的。一个可能的解决办法是

buckets = (0..<capacity).map { _ in Bucket() }

Bucket=(0..嘿,Martin,我有一个简单的问题。当我初始化
Bucket
时,数组中的5个项是否都共享同一个实例?@user7418039:的确,它们共享,因为Bucket是一个类(我应该考虑到这一点)。-请参阅以获取可能的解决方案。
buckets = Array<Bucket>(repeating: Bucket(), count: capacity)
buckets = Array(repeating: Bucket(), count: capacity)
buckets = (0..<capacity).map { _ in Bucket() }