Kotlin 表达式 - 案例 为String实现四则运算

// 减法
operator fun Strinig.minus(right: Any?): String {
    return this.replaceFirst(right.toSring(), "")
}

// 因为上面的函数只有一行,可以写的简单点
// operator fun String.minus(right: Any?) 
//    = this.replaceFirst(right.toString(), "")


// 乘法
operator fun times(right: Int): String {
    return (1..right).joinToString(""){this}
}

// 除法
operator fun div(right: Any?): Int {
    // 将输入转为String, null也可以转成String,这是合法的 空转换为"null"
    val right = right.toString()

    // 滑窗函数windowed
    // 在this上滑动,滑窗的大小为right.length,每次滑动1个
    return this.windowed(right.length, 1) {
        // 看看滑动获取的结果是不是right, 如果为true,就调用count计数
        it == right
    
    // windowed 返回的类型是List<Boolean>
    // count为lambal表达式,它接收一个Boolean,再返回一个Boolean。
    // 在这个实例中,
    // 计数为true的个数, 这个样数出来就是字符right在this中出现的个数 
    // [false, false, ... true, false]
    }.count{it}     
}

fun main() {
    val value = "HelloWorld"
    println(value - "World")         // 输出"Hello"

    val star = "*"
    println("*" * 20)                // 输出20个"*"
    
    println(val/l)                   // 输出2

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值