Kotlin_扩展函数与运算符重载
扩展函数
扩展函数指的是在修改某个类的源码的情况下, 先该类添加新的函数
- 向哪个类添加扩展函数, 就定义一个同名的Kotlin文件, 方便查找
- 扩展函数可以定义在类中, 不一定要创建新文件, 但是最好将它定义成顶层方法, 这样可以让扩展函数拥有全局的访问域
fun String.lettersCount(): Int {
var count = 0
for (char in this) {
if (char.isLetter()) {
count++
}
}
return count
}
fun main()
{
val count = "ABC123xyz!@#".lettersCount()
println(count)
}
运算符重载
Money对象
class Money(val value: Int) {
operator fun plus(money: Money): Money {
val sum = value + money.value
return Money(sum)
}
operator fun plus(newValue: Int): Money {
val sum = value + newValue
return Money(sum)
}
}
fun main()
{
val money1 = Money(5)
val money2 = Money(10)
val money3 = money1 + money2
val money4 = money3 + 20
println(money4.value)
}
a in b
语法糖
if ("hello".contains("he")) {
}
// 等价于
if ("he" in "hello") {
}
随机生成字符串长度的函数
//operator fun String.times(n: Int): String {
// val builder = StringBuilder()
// repeat(n) {
// builder.append(this)
// }
// return builder.toString()
//}
operator fun String.times(n: Int) = repeat(n)
fun getRandomLengthString(str: String) = str * (1..20).random()
fun main()
{
val str = "abc" * 3
println(str)
println(getRandomLengthString("abc"))
}