如何创建 Kotlin 比较类型?

2024-01-09

刚刚学习定义 DateRange 类型

val wholeYear2017 = Date(2017,1,1)..Date(2017,12,31)

所以我创建了如下类型

class DateRange<Date: Comparable<Date>>(override val start: Date, override val endInclusive: Date)
    : ClosedRange<Date>

class Date (val year: Int, val month: Int, val day: Int) {

    operator fun compareTo(other: Date): Int {
        if (this.year > other.year) return 1
        if (this.year < other.year) return -1
        if (this.month > other.month) return 1
        if (this.month < other.month) return -1
        if (this.day > other.day) return 1
        if (this.day < other.day) return -1
        return 0
    }

    operator fun rangeTo(that: Date): DateRange = DateRange(this, that)
}

但我遇到了编译错误

One type of argument expected for class DateRange<Date: Comparable<Date>> : ClosedRange<Date>

我错过了什么?我做对了吗?


你需要实施Comparable界面。您可以使用compareValuesBy辅助函数:

data class Data(
        val a: Int,
        val b: Int
) : Comparable<Data> {
    override fun compareTo(other: Data) = compareValuesBy(this, other,
            { it.a },
            { it.b }
    )
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何创建 Kotlin 比较类型? 的相关文章

随机推荐

  • Spring security 打开弹出登录

    当用户执行需要验证的操作而他不需要验证时 有人知道如何打开弹出登录进行验证 使用 Spring Security 例如 假设该页面有一个 立即购买 按钮 如果用户已经通过身份验证 则将产品添加到购物车并执行结账 立即购买页面 或者打开一个弹
  • Python 装饰器让函数忘记它属于一个类

    我正在尝试编写一个装饰器来进行日志记录 def logger myFunc def new args keyargs print Entering s s myFunc im class name myFunc name return my
  • 从 MVC 控制器获取 JSON 对象

    我想要的是在对跨域进行 Ajax 调用时保护我的开发人员密钥 在此之前 我会直接访问该网址并插入我的密钥 像这样 ajax url https na api pvp net api lol na v2 3 team TEAM ID api
  • head 标签中的内联代码 - ASP.NET

    是否可以在具有 runatserver 的母版页的 head 标签中执行类似的操作 这是行不通的 因为它会生成这种 html 输出呈现如下的原因 href lt Config ResourcesDomain gt images style
  • 使用可选解析器从 joda-time DateTimeFormatter 打印

    在使用 joda time 2 1 的项目中 我有以下内容DateTimeFormatter Parser for the fraction part of a date time value private static final Da
  • 获取从 SQL Server 上的 SSIS 包执行的 SQL 查询

    我构建了一个自定义作业日志框架 用于记录 SSIS 包中执行的所有任务以及出现的任何错误 完成后 要求进行增强以存储 SSIS 包在 SQL Server 上执行的任何 SQL 查询 这不仅限于执行 SQL 任务 它们还会查找包运行的任何
  • Element UI 和字体非常棒

    谁能解释一下是否可以在 Element UI 中使用 font awesome 或其他大图标字体 我看过常见问题解答 但无法让它为我工作 https github com ElemeFE element blob dev FAQ md ht
  • 在 Azure 函数中初始化 AutoMapper

    我正在尝试创建一个 Azure 函数 在其中使用 AutoMapper 的一些代码 我对 C Azure 和 AutoMapper 相当陌生 在寻找初始化 AutoMapper 配置的正确方法时遇到了一些困难 MapInitializer
  • ObjectDataSource 选择方法无法“查看”任何其他控件的值

    我什至不知道如何清楚地表达这一点 而且代码太多 无法全部粘贴到这里 让我从一般性描述开始 也许它会敲响警钟 我有一个使用 ObjectDataSource 的 DataGrid 由于需要两个日期选择器来过滤结果 ObjectDataSour
  • MongoDB 选择不同的和其中

    所以我正在做一个选择不同的工作 但我还想添加另一个键 data this gt db gt command array distinct gt scores key gt target user 我需要这样的东西 SELECT DISTIN
  • 使用 VSCode 调试 Electron 渲染器进程

    I tried 这个文件 https github com Microsoft vscode recipes tree master Electron 但是遇到了问题 我一张一张地浏览了指南 一切都很好 直到 1 将renderer js的
  • git:谁推入了 post-receive 挂钩

    如何确定谁推送到存储库 IE 有人这样做git push origin master并在 post receive 挂钩中originrepo 我需要使用某人的姓名或电子邮件 如果您使用 SSH 协议将更改推送到服务器 并且每个用户在服务器
  • 显示 UILabel 的文本

    继iOS 编程 大书呆子牧场指南 第六版的指南 我尝试使用 swift 制作一个测验项目 ViewController 代码在这里 import UIKit class ViewController UIViewController IBO
  • Java中的垃圾收集器是什么?

    我是 Java 新手 对 Java 中的垃圾收集器感到困惑 它实际上有什么作用以及何时发挥作用 请描述Java中垃圾收集器的一些属性 The 垃圾收集器 http en wikipedia org wiki Garbage collecti
  • 如何从 IDE 运行/调试 Streamlit 应用程序

    我真的很喜欢 Streamlit 作为研究环境 混合笔记本 仪表板式的输出 我可以使用纯代码快速设计其定义 无单元等 并且能够在运行时通过小部件影响我的代码 这是一个游戏规则改变者 为此 我正在寻找一种运行甚至调试 Streamlit 应用
  • 使用 LINQ 计算列表中给定对象的数量

    我有一个列表 其中可以包含同一对象的多次出现 现在我需要计算给定对象包含在该列表中的频率 int count 0 foreach IMyObject item in myList if item object2Count count 我确信
  • 如何修复致命错误:无效的标记压缩接近堆限制分配失败 - JavaScript 堆内存不足

    I got an error which is FATAL ERROR Ineffective mark compacts near heap limit Allocation failed JavaScript heap out of m
  • Hive 查询为匹配条件的行序列生成标识符

    假设我有以下配置单元表作为输入 我们称之为connections userid timestamp 1 1433258019 1 1433258020 2 1433258080 2 1433258083 2 1433258088 2 143
  • 已安装软件包,但出现找不到函数的错误 R [重复]

    这个问题在这里已经有答案了 可能的重复 错误 在 R 中找不到函数 https stackoverflow com questions 7027288 error could not find function in r 我正在尝试在 R
  • 如何创建 Kotlin 比较类型?

    刚刚学习定义 DateRange 类型 val wholeYear2017 Date 2017 1 1 Date 2017 12 31 所以我创建了如下类型 class DateRange