swift - 为什么我的二元运算符不能应用于正确键入的操作数?
问题描述
解决方案
您需要确保K
和R.Key
属于同一类型,因为您定义了自定义运算符以接受两个相同类型的输入参数。
extension Tree where K == R.Key {
public func contains(_ key: K) -> Bool {
switch self {
case .empty:
return false
case let .node(record, left, right):
switch key ⊰ record.key {
case .matching: return true
case .leftTree: return left.contains(key)
case .rightTree: return right.contains(key)
}
}
}
}
或者您可以修改Tree
自身以确保K
和R.Key
始终是同一类型。
public enum Tree<R: RecordProtocol, K> where R.Key == K {
case empty
indirect case node(_ record: R,_ left: Tree<R,K>,_ right: Tree<R,K>)
public init() {
self = .empty
}
}
extension Tree {
public func contains(_ key: K) -> Bool {
switch self {
case .empty:
return false
case let .node(record, left, right):
switch key ⊰ record.key {
case .matching: return true
case .leftTree: return left.contains(key)
case .rightTree: return right.contains(key)
}
}
}
}
推荐阅读
- angular - Firestore 图像 url 到 base64 的转换
- c# - 将请求头转换为json字符串c#
- azure - 如何使用 REST API 从 azure 获取 azure 指标数据
- c# - 在 OpenGL 中使用相机的问题
- python - 如何避免在 sklearn GridSearchCV 中进行不必要的重新计算?
- laravel - 如何将 Laravel 项目连接到 GCP 上的 SQL 实例?
- linkedin - 在 LinkedIn 上分享一个网页不断给出“糟糕!不是你。是我们。请再试一次”错误页面
- android - 应用程序在后台时不显示消息
- docker - vue-cli-service serve 和 webpack-dev-server 之间的区别(在 docker 中)
- json - 如何从 JSON 文件中获取数据,如何解析 Date 对象以检索数据?