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语言规范的一部分,开发者应该遵循这些规则来定义运算符的行为。
下先举个简单的例子:
- 算术操作符
我们可以为自定义类定义加法、减法、乘法和除法操作符的行为。
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
}
- 调用操作符
我们可以为自定义类定义调用操作符()的行为。
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中运算符重载的一些示例。通过运算符重载,我们可以使代码更加简洁和易读。
相关文章:
Kotlin 运算符重载
在Kotlin中,常用的运算符重载函数名如下: 1.算术操作符: 加法:plus 减法:minus 乘法:times 除法:div 取模:rem 或 mod 整数除法:floorDiv 求幂:pow 自增&…...
OpenHarmony4.1-轻量与小型系统ubuntu开发环境
因OpenHarmony官网提供包含轻量、小型与标准系统的全量代码非常宠大,解包后大概需要70G以上硬盘空间,如要编译标准系统则需要140G以上空间。 如硬盘空间有限与只使用轻量/小型OpenHarmony系统,则可以下载并直接使用本人裁剪源码过的ubuntu硬盘…...
AVR 单片机硬件供电处理
摘自AVR 单片机应用笔记:AN2519 - AVR Microcontroller Hardware Design Considerations。 2. 供电 供电设计是任何硬件设计的关键一环,直接影响到系统的性能。在设计供电时,有两个重要的方面需要考虑:ESD 防护和噪声干扰。这些内…...
LeetCode 27 移除元素
LeetCode 27 - 移除元素(Remove Element)是一个简单但经典的双指针问题,主要考察数组操作的基本功。虽然问题容易,但掌握多种解法以及衍生的变体问题对解决更复杂的操作数组问题有帮助。 题目描述 输入:整数数组 nums…...
对“预训练”的理解
预训练有什么用 传统的机器学习是偏数学的,对数据的量不做过多要求,而深度学习的项目通常是有大量的数据可供使用。 在平常的任务或者项目中,我们可能并没有大量数据,只有少量数据,在这时我们就可以通过“借用”有大…...
论文阅读:CAN GENERATIVE LARGE LANGUAGE MODELS PERFORM ASR ERROR CORRECTION?
CAN GENERATIVE LARGE LANGUAGE MODELS PERFORM ASR ERROR CORRECTION? 生成式大语言模型能否进行自动语音识别(ASR)纠错? https://arxiv.org/pdf/2307.04172 文章目录 速览常规总结通俗版 摘要(Abstract)2. 引言&a…...
Stable Diffusion(SD)系列模型及关联算法深度解析
一、基础模型架构演进 SD v1.5 核心架构:基于Latent Diffusion Model(LDM),通过VAE将图像压缩至潜空间进行扩散训练,支持512x512分辨率生成,兼容二次元与写实风格混合创作12。 训练数据&…...
FPGA开发,使用Deepseek V3还是R1(3):系统级与RTL级
以下都是Deepseek生成的答案 FPGA开发,使用Deepseek V3还是R1(1):应用场景 FPGA开发,使用Deepseek V3还是R1(2):V3和R1的区别 FPGA开发,使用Deepseek V3还是R1&#x…...
logback日志输出配置范例
logback日志输出配置范例 在wutool中,提供了logback日志输出配置范例,实现日志文件大小限制、滚动覆盖策略、定时清理等功能。 关于wutool wutool是一个java代码片段收集库,针对特定场景提供轻量解决方案,只要按需选择代码片段…...
【开源免费】基于SpringBoot+Vue.JS酒店管理系统(JAVA毕业设计)
本文项目编号 T 224 ,文末自助获取源码 \color{red}{T224,文末自助获取源码} T224,文末自助获取源码 目录 一、系统介绍二、数据库设计三、配套教程3.1 启动教程3.2 讲解视频3.3 二次开发教程 四、功能截图五、文案资料5.1 选题背景5.2 国内…...
Unity中动态切换光照贴图LightProbe的方法
关键代码:LightmapSettings.lightmaps lightmapDatas; LightmapData中操作三张图:lightmapColor,lightmapDir,以及一张ShadowMap 这里只操作前两张: using UnityEngine; using UnityEngine.EventSystems; using UnityEngine.UI;public cl…...
linux(2)用户管理
文章目录 1. 切换用户2. 添加删除用户3.写改密码 1. 切换用户 # 切换用户名,不切换工作目录 su 用户名 # 一起切换工作目录 su - 用户名 # 退出用户 exit2. 添加删除用户 # 添加用户 sudo adduser username # 推荐sudo useradd -m -s /bin/bash 用户名-m 如果创建…...
在鸿蒙HarmonyOS手机上安装hap应用
一、下载工具 安装hap包需要用到小工具 。 二、解压到目录后,进入该文件夹,打开命令行,如下图 三、将下载好的hap包放入刚才解压的文件夹内(假设hap包文件名为app.hap) 四、连接好手机和电脑,手机需要打…...
MacBook Pro使用FFmpeg捕获摄像头与麦克风推流音视频
FFmpeg查看macos系统音视频设备列表 ffmpeg -f avfoundation -list_devices true -i "" 使用摄像头及麦克风同时推送音频及视频流: ffmpeg -f avfoundation -pixel_format yuyv422 -framerate 30 -i "0:1" -c:v libx264 -preset ultrafast -b:v 1000k -…...
工程化与框架系列(8)--持续集成实践
持续集成实践 🔄 持续集成(Continuous Integration,简称CI)是现代前端开发流程中的重要环节,它通过自动化构建、测试和部署,帮助团队更快速、更可靠地交付高质量代码。本文将详细介绍前端持续集成的实践方…...
Python核心技术,Django学习基础入门教程(附环境安装包)
文章目录 前言1. 环境准备1.1Python安装1.2选择Python开发环境1.3 创建虚拟环境1.4 安装 Django 2. 创建 Django 项目3. Django项目结构介绍4. 启动开发服务器5. 创建 Django 应用6. 应用结构介绍7. 编写视图函数8. 配置 URL 映射9. 运行项目并访问视图10. 数据库配置与模型创建…...
【Qt-信号与槽】connect函数的用法
🏠个人主页:Yui_ 🍑操作环境:Qt Creator 🚀所属专栏:Qt 文章目录 1.信号和槽的概念1.1 信号的本质1.2 槽的本质1.3 补充说明2. 信号和槽的使用2.1 connect函数介绍2.2 connect函数的简单使用2.2.1 图形化方…...
计算机毕业设计SpringBoot+Vue.js景区民宿预约系统(源码+文档+PPT+讲解)
温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 作者简介:Java领…...
服务流程设计和服务或端口重定向及其websocket等应用示例
服务流程设计和服务或端口重定向及其websocket等应用示例 目录 服务或端口重定向的服务设计和websocket等应用示例 一、通用请求控制流程 1.1、入口 1.2、所有GET请求首先预检控制单元 1.3、http请求会分别自动307重定向 1.4、所有请求首先执行跨源控制单元 1.5、然后…...
16. LangChain实战项目2——易速鲜花内部问答系统
需求简介 易束鲜花企业内部知识库如下: 本实战项目设计一个内部问答系统,基于这些内部知识,回答内部员工的提问。 在前面课程的基础上,需要安装的依赖包如下: pip install docx2txt pip install qdrant-client pip i…...
OpenClaw压力测试:Qwen3-14B持续运行24小时稳定性报告
OpenClaw压力测试:Qwen3-14B持续运行24小时稳定性报告 1. 测试背景与目标 上周在尝试用OpenClaw自动处理一批PDF文档时,遇到了一个奇怪的现象:连续运行4小时后,系统响应速度明显下降,甚至出现了几次任务中断。这让我…...
Local SDXL-Turbo应用案例:独立开发者构建个人AI绘画SaaS产品的技术栈选型
Local SDXL-Turbo应用案例:独立开发者构建个人AI绘画SaaS产品的技术栈选型 1. 引言:从想法到产品,一个开发者的选择 如果你是一名独立开发者,或者是一个小团队的负责人,想做一个自己的AI绘画工具,你可能会…...
ReactNative项目OpenHarmony三方库集成实战:react-native-render-html
欢迎加入开源鸿蒙跨平台社区:https://openharmonycrossplatform.csdn.net 项目基于 RN 0.72.90 开发 📋 前言 在移动应用开发中,HTML 内容渲染是一项常见需求,特别是在新闻资讯、富文本编辑、邮件展示等场景中。React Native 原…...
OpenClaw与千问3.5-35B-A3B-FP8低成本方案:自建模型接口替代OpenAI高价调用
OpenClaw与千问3.5-35B-A3B-FP8低成本方案:自建模型接口替代OpenAI高价调用 1. 为什么需要替代OpenAI高价调用 去年冬天的一个深夜,我盯着OpenAI API账单上那个刺眼的数字——$127.83,这只是一个月的测试费用。当时我正在用OpenClaw做一个自…...
OpenClaw技能开发模板:5分钟为Kimi-VL-A3B-Thinking创建自定义多模态处理器
OpenClaw技能开发模板:5分钟为Kimi-VL-A3B-Thinking创建自定义多模态处理器 1. 为什么需要自定义技能 上周我在处理一批产品截图和用户反馈时,突然意识到一个痛点:虽然Kimi-VL-A3B-Thinking多模态模型能理解图片内容,但每次都要…...
OpenClaw安全实践:Kimi-VL-A3B-Thinking本地化部署的数据边界保障
OpenClaw安全实践:Kimi-VL-A3B-Thinking本地化部署的数据边界保障 1. 为什么选择本地化部署? 去年夏天,我接手了一个医疗影像分析项目,需要处理大量患者CT扫描图像和诊断报告。最初尝试使用公有云API服务时,每次上传…...
OpenClaw社交媒体管理:Gemma-3-12b-it自动回复评论与生成周报
OpenClaw社交媒体管理:Gemma-3-12b-it自动回复评论与生成周报 1. 为什么选择OpenClaw管理社交媒体 去年运营个人技术账号时,我每天要花1小时手动回复评论和整理周报。直到发现OpenClaw这个开源自动化框架,配合Gemma-3-12b-it模型࿰…...
C++ 模板元编程在性能优化中的作用
C 模板元编程在性能优化中的作用 在现代C开发中,性能优化始终是开发者关注的核心问题之一。而模板元编程(Template Metaprogramming, TMP)作为一种编译期计算技术,能够在程序运行前完成复杂的逻辑处理,从而显著提升运…...
Android开发者必看:VirtualDisplay与mirrorDisplay的底层实现原理与性能优化
Android图形系统深度解析:VirtualDisplay与MirrorDisplay的底层架构与性能调优 在Android多屏交互与扩展显示场景中,VirtualDisplay和MirrorDisplay作为图形系统的核心组件,承担着虚拟显示设备创建与内容复制的关键功能。本文将深入SurfaceFl…...
BCompare_Keygen 授权激活实战指南:从评估错误到专业版授权的全面解决方案
BCompare_Keygen 授权激活实战指南:从评估错误到专业版授权的全面解决方案 【免费下载链接】BCompare_Keygen Keygen for BCompare 5 项目地址: https://gitcode.com/gh_mirrors/bc/BCompare_Keygen 【问题定义】Beyond Compare 评估期结束的核心痛点 当Bey…...
