1. 重载操作符
用指定的函数来重新定义操作符的功能
举几个例子
- 一元操作符(+)
data class Number(var value: Int) /** * 重载一元操作符+,使其对Number中实际数据取绝对值 */ operator fun Number.unaryPlus(): Number { this.value = Math.abs(value) return this }
- "In"运算符
可参考文章操作符重载及中缀调用class IntCollection { val intList = ArrayList<Int>()} // 重载"in"操作符 operator fun IntCollection.contains(value: Int): Boolean { return this.intList.contains(value) }
2. 字符串模板
字符串模板是在字符串中添加若干个占位符,内容会在后期指定,也就是说,用模板可以设置字符串动态的部分。
模板使用美元符号”$”表示
- 字符串可以通过占位符的形式进行插值
- 如果需要在字符串中包含”$”,可以对其进行转义
- 当占位符是表达式时,需要用花括号把表达式括起来
- 可以在双引号中嵌套双引号,只要被嵌套的双引号在花括号的表达式中
val name="Mike"
println("hello,$name")
//---------------------------------
val name="Mike"
println("$name have 5\$s")
//-----------------------------------
val name="Mike"
println("hello,${if(name.isBlank()) name.toUpperCase() else name.toLowerCase()}")
网友评论