中缀表示法
发表于|更新于
|浏览量:
无意苦争春,一任群芳妒。零落成泥碾作尘,只有香如故。——陆游
中缀表示法能让我们定义一些“关键字”
标有 infix 关键字的函数也可以使用中缀表示法(忽略该调用的点与圆括号)调用。中缀函数必须满足以下要求:
1
2
3
4
5
6
7 infix fun Int.shl(x: Int): Int { …… }
// 用中缀表示法调用该函数
1 shl 2
// 等同于这样
1.shl(2)
代码如下:
1 | infix fun Int?.default(x: Int): Int = this ?: x |
效果:

相关推荐
2023-02-03
kotlin泛型多个上界
善气迎人,亲如兄弟;恶气迎人,害于戈兵。——管子 java中,我们可以使用<T extends Comparable<? super T>, Serializable>来指定多个接口的泛型限制 kotlin中 对应的是上界 上界最常见的约束类型是与 Java 的 extends 关键字对应的 上界: 1fun <T : Comparable<T>> sort(list: List<T>) { …… } 冒号之后指定的类型是上界:只有 Comparable<T> 的子类型可以替代 T。 例如: 12sort(listOf(1, 2, 3)) // OK。Int 是 Comparable<Int> 的子类型sort(listOf(HashMap<Int, String>())) // 错误:HashMap<Int, String> 不是 Comparable<HashMap<Int, String>> 的子类型 默认的上界...
2023-04-28
mvc导出excel报错No converter
无翼而飞者,声也。——佚名 今天导出excel报错 1No converter for [class org.springframework.core.io.ByteArrayResource] with preset Content-Type 'application/vnd.ms-excel' 代码如下: 123456789@PostMapping("exportSettle")fun export(dto: CommonDTO) { val writer = ExcelUtil.getWriter() writer.writeRow(Maps.of("key", "value"), true) response.addHeader("Content-Disposition", writer.getDisposition("test.xlsx", CharsetUtil.CHARSET_UTF_8)) response.contentTyp...
2023-01-05
kotlin获取属性注解
微笑具有一种挽救力,它可以点亮天空,可以振作精神,可以改变你周围的气氛,更可以改变你——乔·吉拉德 kotlin里获取属性注解首先引入反射依赖: 1234<dependency> <groupId>org.jetbrains.kotlin</groupId> <artifactId>kotlin-reflect</artifactId></dependency> 完整: 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmln...
2023-07-19
kotlin的..<运算符
此处果有可乐,我即别无所思。——林语堂 今天升级了kotlin版本1.9.0 发现了个新特性 https://kotlinlang.org/docs/whatsnew19.html#stable-operator-for-open-ended-ranges 这个是用来取代以前的until函数的 12345678fun main() { for (number in 2 until 10) { if (number % 2 == 0) { print("$number ") } } // 2 4 6 8} 现在: 12345678fun main() { for (number in 2..<10) { if (number % 2 == 0) { print("$number ") } } ...
2022-10-21
尾递归函数
怯懦的朋友在叛离之后,会成为最凶残的仇敌——埃·斯宾塞 中文文档 Kotlin 支持一种称为尾递归的函数式编程风格。 这允许一些通常用循环写的算法改用递归函数来写,而无堆栈溢出的风险。 当一个函数用 tailrec 修饰符标记并满足所需的形式时,编译器会优化该递归,留下一个快速而高效的基于循环的版本: 1234val eps = 1E-10 // "good enough", could be 10^-15tailrec fun findFixPoint(x: Double = 1.0): Double = if (Math.abs(x - Math.cos(x)) < eps) x else findFixPoint(Math.cos(x)) 这段代码计算余弦的不动点(fixpoint of cosine),这是一个数学常数。 它只是重复地从 1.0 开始调用 Math.cos,直到结果不再改变,对于这里指定的 eps 精度会产生 0.7390851332151611 的结果。最终代码相当于这种更传统风格的代码: 123456789...
2022-08-17
aop注解在整个类生效
志向是天才的幼苗,经过热爱劳动的双手培育,在肥田沃土里将成长为粗壮的大树。——苏霍姆林斯基 之前写过自定义注解和AOP,但其是作用于方法上 今天用kotlin写一个作用在类上的:主要是@annotation换成@within 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647package com.ruben.simplebootimport org.aspectj.lang.ProceedingJoinPointimport org.aspectj.lang.annotation.Aroundimport org.aspectj.lang.annotation.Aspectimport org.springframework.boot.autoconfigure.SpringBootApplicationimport org.springframework.boot.runApplicationimport org.springframework.ster...

阿超
我的名字叫阿超 年龄25岁 家在北京市 职业是软件开发 每天最晚也会在八点前回家 不抽烟 酒浅尝辄止 晚上十二点上床 保证睡足八个小时 睡前写一篇博客 再做二十分钟俯卧撑暖身 然后再睡觉 基本能熟睡到天亮 像婴儿一样不留下任何疲劳和压力 就这样迎来第二天的早晨 健康检查结果也显示我很正常 我想说明我是一个不论何时都追求内心平稳的人 不拘泥于胜负 不纠结于烦恼 不树立使我夜不能寐的敌人 这就是我在这社会的生活态度
Follow Me公告
This is my Blog