- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想在协议(protocol)扩展中为我的协议(protocol)实现一个可打印的功能,然后将根据协议(protocol)的字段打印任何符合协议(protocol)的结构。但是我得到了以下错误,似乎 swift 不允许这样做。我应该扩展 String
并为它添加一个 init(_:Info) {...}
吗?
protocol Info {
var name: String { get }
var serial: Int { get }
}
struct Person : Info {
var name = ""
var serial = 0
}
extension Info : CustomStringConvertible {
^~~~~~~~~~~~~~~~~~~~~~~
error: extension of protocol 'Info' cannot have an inheritance clause
var description: String {
return "\(name) + \(serial)"
}
}
func print(info: Info) {
print(info)
}
最佳答案
您应该在定义中而不是在扩展中继承协议(protocol)。
protocol Info: CustomStringConvertible {
var name: String { get }
var serial: Int { get }
}
struct Person : Info {
var name = ""
var serial = 0
}
extension Info {
var description: String {
return "\(name) + \(serial)"
}
}
func print(info: Info) {
print(info)
}
关于swift - 如何在扩展中为协议(protocol)实现 CustomStringConvertible?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58215667/
如何创建一个协议(protocol)或类型,在实例化时接受所有类型的类型,如 Int、Double、String、NSDate 等(如 CustomStringConvertible)? 第一个 bl
我已经在 swift 中实现了一个链表 - 我还构建了一个堆栈和队列,它们都在底层使用了链表。我扩展了链接列表以符合 customstringconvertible 协议(protocol),这样我就
我在 XCode playground 中为我的 enum 使用 CustomStringConvertible 时遇到了一个非常奇怪的问题。 请参阅以下枚举: enum A { case v
我希望 CustomStringConvertible 为我提供节点的描述,特别是它包含的边。 作为背景,我一直在研究图论并创建了一个节点: class Node : CustomStringConv
我整理了以下类(class)(在 Swift variable comparison where type is not known 中其他人的帮助下)。 我想要实现的是将一个闭包传递给 Search
我正在实现 try catch 枚举: enum processError: Error, CustomStringConvertible { case one var
我在 Xcode Playground 中尝试这段代码并注意到 description getter 方法被调用了太多次。 代码在这里:https://gist.github.com/T-Pham/4
我有以下枚举 enum Properties: CustomStringConvertible { case binaryOperation(BinaryOperationProperties
这个问题在这里已经有了答案: Using os_log to log function arguments, or other dynamic data (5 个答案) 关闭 4 年前。 我想知道我
我想在协议(protocol)扩展中为我的协议(protocol)实现一个可打印的功能,然后将根据协议(protocol)的字段打印任何符合协议(protocol)的结构。但是我得到了以下错误,似乎
我已经声明了以下内容: class Song: CustomStringConvertible { let title: String let artist: String i
我想要一个可以实例化几个不同对象的通用函数enum我通过提供枚举类型和 Int原始值(value)。这些enum s 也是 CustomStringConvertible . 我试过这个: func
我想为给定的类型实现类似于 CustomStringConvertible 的协议(protocol),但例如。 我的需要是显示类型属性 值,而无需为此目的创建实例评估器。当然,我可以向此类型添加 C
我想通过添加一些额外的输出来扩展我的 class 中 CustomStringConvertible 协议(protocol)的默认行为。 例如,假设您在名为 Bar 的项目中有这个 class: c
我在 iOS playground 中写了一个结构体,想自定义它的打印格式。 struct Point { let x: Int, y: Int } extension Point: Cust
在这里,我尝试对我的 distinct 函数进行基准测试,该函数接收随机对象数组并返回不同的数组,方法是通过 phoneNumber 属性删除重复项:当我为我的 Person 类实现 CustomSt
当枚举符合协议(protocol) CustomStringConvertible 时,是否可以从变量中获取枚举描述?简化的定义是: enum myEnum: CustomStringConverti
我正在尝试编写一个函数,该函数接受任何可由 CustomStringConvertible 表示的 RawRepresentable 值。我试过这样写: enum MyEnum: String {
我正在试用 XCGLogger 并注意到,如果我有一个日志语句,其中包含来自同时实现 CustomDebugStringConvertible 和 CustomStringConvertible 的类
在 Swift 2.2 中,提供的协议(protocol) CustomStringConvertible 提供了一个返回字符串表示的计算属性。通常,它用于简单数据类型的简短单行字符串表示。 是否有类
我是一名优秀的程序员,十分优秀!