【发布时间】:2021-05-27 01:10:35
【问题描述】:
我有一个用例来比较员工的等级。这是我想做的:
protocol Enployee: Comparable {
var id: String { get }
var rank: Int { get }
var name: String { get }
var type: String { get }
}
extension Enployee {
static func <(lhs: Enployee, rhs: Enployee) -> Bool {
return lhs.rank < rhs.rank
}
}
但我收到以下错误:
Protocol 'Enployee' 只能用作通用约束,因为它具有 Self 或关联的类型要求
然后我更改了我的代码:
extension Enployee {
static func <(lhs: Self, rhs: Self) -> Bool {
return lhs.rank < rhs.rank
}
}
我可以编译它。但是当我继续处理我的用户案例时:
struct Engineer: Enployee {
var id: String
var rank: Int
var name: String
let type: String = "Engineer"
}
struct Manager: Enployee {
var id: String
var rank: Int
var name: String
let type: String = "Manager"
}
let staff1 = Engineer(id: "123", rank: 2, name: "Joe")
let staff2 = Engineer(id: "124", rank: 2, name: "Frank")
let staff3 = Manager(id: "101", rank: 10, name: "John")
public struct Department<T: Comparable> {
}
let queue = Department<Enployee>()
我收到另一条错误消息:
Protocol 'Enployee' 作为一种类型不能符合 'Comparable'
有什么想法吗?
【问题讨论】:
-
"Employee" 是这个词的拼写方式。 ('m',而不是'n')
-
@Jessy 错字。谢谢。
标签: swift swift-protocols