gpt4 book ai didi

swift - 跨集合扩展 customstringconvertible

转载 作者:行者123 更新时间:2023-11-30 13:23:55 26 4
gpt4 key购买 nike

我已经在 swift 中实现了一个链表 - 我还构建了一个堆栈和队列,它们都在底层使用了链表。我扩展了链接列表以符合 customstringconvertible 协议(protocol),这样我就可以在其上调用 print(list) 。该扩展包含在我的 linkedlist.swift 文件中,如下所示:

extension LinkedList: CustomStringConvertible {
var description: String {
var currentIndex: Int = 0
var description: String = ""
if var currentNode = self.head {
// while currentNode != nil {
for _ in 0...count-1 {
//description += (String(currentNode.value) + " " )
description += ("\"" + (String(currentNode.value)) + "\"" + " is at index: \(currentIndex)\n")
if let nextNode = currentNode.next {
currentNode = nextNode
currentIndex += 1
}
}
}
return description
}
}

如何将此功能扩展到我的队列/堆栈,而无需重写协议(protocol)扩展?我的队列文件如下所示:

class Queue <T> {
private var list = LinkedList<T> ()
var isEmpty: Bool {
return list.isEmpty
}

接下来是我选择实现的任何功能。在 VC 或其他地方调用 print(newQueue) 永远不会调用 linkedList 自定义字符串可转换扩展...不知道为什么。我需要将链表子类化为队列/堆栈吗?我有 Objc 背景,不太关注协议(protocol)和扩展。

最佳答案

Queue不是LinkedList的子类,因此不继承description 属性。您必须实现该协议(protocol)也适用于该类(class),但当然您可以“转发”到LinkedList 的描述:

extension Queue: CustomStringConvertible {
var description: String {
return list.description
}
}

关于swift - 跨集合扩展 customstringconvertible,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37445583/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com