当前位置: 首页 > news >正文

Kotlin 运算符重载

在Kotlin中,常用的运算符重载函数名如下:

1.算术操作符:
加法:plus
减法:minus
乘法:times
除法:div
取模:rem 或 mod
整数除法:floorDiv
求幂:pow
自增:inc
自减:dec

2.比较操作符:
等于:equals 或 ==
不等于:notEquals 或 !=
大于:greater 或 >
小于:less 或 <
大于等于:greaterEquals 或 >=
小于等于:lessEquals 或 <=

3.索引操作符:
获取元素:get
设置元素:set

4.调用操作符:
调用:invoke

5.包含操作符:
包含:contains

6.类型转换操作符:
类型转换:as

7.赋值操作符:
赋值:set

8.一元操作符:
正号:unaryPlus
负号:unaryMinus
逻辑非:not

以上是一些常用的运算符重载函数名。需要注意的是,这些函数名是Kotlin语言规范的一部分,开发者应该遵循这些规则来定义运算符的行为。
下先举个简单的例子:

  1. 算术操作符
    我们可以为自定义类定义加法、减法、乘法和除法操作符的行为。
data class Point(val x: Int, val y: Int) {operator fun plus(other: Point): Point {return Point(x + other.x, y + other.y)}operator fun minus(other: Point): Point {return Point(x - other.x, y - other.y)}operator fun times(other: Int): Point {return Point(x * other, y * other)}operator fun div(other: Int): Point {return Point(x / other, y / other)}
}fun main() {val p1 = Point(1, 2)val p2 = Point(3, 4)val p3 = p1 + p2 // 相当于 p1.plus(p2)val p4 = p1 - p2 // 相当于 p1.minus(p2)val p5 = p1 * 2 // 相当于 p1.times(2)val p6 = p1 / 2 // 相当于 p1.div(2)println(p3) // 输出: Point(x=4, y=6)println(p4) // 输出: Point(x=-2, y=-2)println(p5) // 输出: Point(x=2, y=4)println(p6) // 输出: Point(x=0, y=1)
}

2.索引操作符
我们可以为自定义类定义索引操作符[]的行为。

class MyList<T>(vararg elements: T) {private val list = elements.toMutableList()operator fun get(index: Int): T {return list[index]}operator fun set(index: Int, value: T) {list[index] = value}
}fun main() {val myList = MyList(1, 2, 3)println(myList[1]) // 输出: 2myList[1] = 4println(myList[1]) // 输出: 4
}
  1. 调用操作符
    我们可以为自定义类定义调用操作符()的行为。
class Greeter(val name: String) {operator fun invoke(greeting: String): String {return "$greeting, $name!"}
}fun main() {val greeter = Greeter("Twg")println(greeter("Hello")) // 输出: Hello, Twg!
}

4.包含操作符
我们可以为自定义类定义包含操作符in和!in的行为。

class Range(val start: Int, val end: Int) {operator fun contains(value: Int): Boolean {return value in start..end}
}fun main() {val range = Range(1, 10)println(8 in range) // 输出: trueprintln(18 !in range) // 输出: true
}

以上就是在Kotlin中运算符重载的一些示例。通过运算符重载,我们可以使代码更加简洁和易读。

http://www.lryc.cn/news/545580.html

相关文章:

  • OpenHarmony4.1-轻量与小型系统ubuntu开发环境
  • AVR 单片机硬件供电处理
  • LeetCode 27 移除元素
  • 对“预训练”的理解
  • 论文阅读:CAN GENERATIVE LARGE LANGUAGE MODELS PERFORM ASR ERROR CORRECTION?
  • Stable Diffusion(SD)系列模型及关联算法深度解析
  • FPGA开发,使用Deepseek V3还是R1(3):系统级与RTL级
  • logback日志输出配置范例
  • 【开源免费】基于SpringBoot+Vue.JS酒店管理系统(JAVA毕业设计)
  • Unity中动态切换光照贴图LightProbe的方法
  • linux(2)用户管理
  • 在鸿蒙HarmonyOS手机上安装hap应用
  • MacBook Pro使用FFmpeg捕获摄像头与麦克风推流音视频
  • 工程化与框架系列(8)--持续集成实践
  • Python核心技术,Django学习基础入门教程(附环境安装包)
  • 【Qt-信号与槽】connect函数的用法
  • 计算机毕业设计SpringBoot+Vue.js景区民宿预约系统(源码+文档+PPT+讲解)
  • 服务流程设计和服务或端口重定向及其websocket等应用示例
  • 16. LangChain实战项目2——易速鲜花内部问答系统
  • 一文了解Conda使用
  • AI辅助学习vue第十四章
  • chromadb向量数据库使用 (1)
  • CSS—text文本、font字体、列表list、表格table、表单input、下拉菜单select
  • 关于大型语言模型的结构修剪
  • PostgreSQL 生产环境升级指南:pg_upgrade 快速完成版本升级!
  • Ubuntu2204下使用NVIDIA GeForce RTX 4090进行DeepSeek-R1-Distill-Llama-8B模型微调
  • JAVA面试常见题_基础部分_mybatis面试题
  • RISC-V汇编学习(一)—— 基础认识
  • 【Delphi】如何解决使用webView2时主界面置顶,而导致网页选择文件对话框被覆盖问题
  • 基于POI的Excel下拉框自动搜索,包括数据验证的单列删除