作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个包含 2 个 Swift 类的层次结构,需要它们来实现 Comparable
:
class Thing : Comparable {
var name = "Thing"
init(name : String){
self.name = name
}
}
class Thingy: Thing {
override init(name: String){
super.init(name: "Thingy")
}
}
func ==(lhs: Thing, rhs:Thing)->Bool{
return lhs.name == rhs.name
}
为了遵守Comparable
,我需要实现这个功能:
func <(lhs: Thing, rhs: Thing) -> Bool{
return lhs.name < rhs.name
}
到目前为止一切顺利,但是如果我需要针对不同子类型的特定 < 函数会发生什么,例如:
func <(lhs: SubThing, rhs: Thing) -> Bool{
return lhs.name < rhs.name
}
我应该怎么做?编译器似乎忽略了这最后的声明。
如果类型倒置,它是否也有效?
lhs: SubThing, rhs: Thing
代替
lhs: Thing, rhs: SubThing
最佳答案
泛型来拯救。使您的 Equatable
、Comparable
函数通用。将 T
约束为 Thing
的子类。
func ==<T:Thing>(lhs: T, rhs:T) -> Bool {
return lhs.name == rhs.name
}
let a = Thing(name: "alpha")
let b = Thingy(name: "beta")
a == b // false
关于swift - 比较 Swift 类层次结构中的协议(protocol),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34715415/
我正在尝试将多个水平链接的 Button 和 TextView 垂直链接为 View 集,但仍保持平面 View 层次结构。这是我的初始布局和代码:
到目前为止,我已经在Google BigQuery上训练了几种模型,目前我需要查看模型的外观(即架构,损失函数等)。 有没有办法获取这些信息? 最佳答案 仔细阅读文档后,我可以说该功能尚不存在。我什至
本文实例讲述了PHP实现二叉树深度优先遍历(前序、中序、后序)和广度优先遍历(层次)。分享给大家供大家参考,具体如下: 前言: 深度优先遍历:对每一个可能的分支路径深入到不能再深入为止,而且每个
我是一名优秀的程序员,十分优秀!