拓展函数
发表于|更新于
|浏览量:
对于聪明人来说,劝告是多余的;对于愚昧人来说,劝告是不够的——莫里哀
拓展函数的定义:
1 | fun String.delBlank() = this.filter { !Character.isWhitespace(it) } |
以及:
1 | fun Int?.default(i: Int = 0) = i |
使用:
1 | fun String.delBlank() = this.filter { !Character.isWhitespace(it) } |
效果:

相关推荐
2022-11-03
kotlin NaN坑
发脾气的人比被发脾气的对象所受的损失更大——霍姆斯 今天发现一个坑,在代码里尝试toBigDecimal抛出了NumberFormatException debug一看,发现值为NaN 在kotlin里,这样的代码会导致NaN 1234val nan = 0.0 / 0.0nan.toBigDecimal() // java.lang.NumberFormatExceptionjava.lang.Double.isNaN(nan) // true 最重要的是NaN,不会通过 安全调用操作符?. 的判断,因为其属于有值 所以上述代码可以改为 12val nan = 0.0 / 0.0nan.takeUnless { it.isNaN() }?.toBigDecimal() // null
2022-09-06
kotlin相关依赖
朋友间保持一定的距离,而使友谊永存——查尔卡 第一次用kt写东西的时候,没引入GAV都可以用…应该是idea集成了kt环境,到线上打包就没有了 新建了一个kotlin项目,发现需要GAV才能打包进去 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253<properties> <maven.compiler.source>8</maven.compiler.source> <maven.compiler.target>8</maven.compiler.target> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <kotlin.version>1.7.10</kotlin.version></properties...
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>> 的子类型 默认的上界...
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...
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...
2022-08-26
kotlin字符串模板
超乎一切之上的一件事,就是保持青春朝气。——莎士比亚 中文文档:https://www.kotlincn.net/docs/reference/basic-syntax.html#using-string-templates 1234567var a = 1// 模板中的简单名称:val s1 = "a is $a" a = 2// 模板中的任意表达式:val s2 = "${s1.replace("is", "was")}, but now is $a" 得到s2结果: a was 1, but now is 2 如果我们需要使用$符号,则可以参考: https://www.kotlincn.net/docs/reference/basic-types.html#%E5%AD%97%E7%AC%A6%E4%B8%B2%E6%A8%A1%E6%9D%BF 使用${'$'} 例如下面的多行文本: 123val price = """...
