kotlin笔记代码15-block: () -> T, block: (T) -> T,block: T.() -> T函数参数定义语法区别

/**
 * Author: L
 * 2022/10/1
 * Description:
 * 1. 泛型扩展数函特征定义:
 *    01. 函数中不能使用return关键字,   示例:block: () -> T
 *    02. 函数中传入it,   示例: block: (T) -> T
 *    03. 函数中传入this,     示例: block: T.() -> T
 *    04. kotlin的函数参数定义了一个函数,规定了该函数的参数,返回, 给函数域中的传值等语法特征
 */


/**
 *  1. block: () -> T
 *    01.传入的函数无参
 *    02.该函数最后一行需要是调用者对象类型,而且无return
 */
fun <T> T.method1(block: () -> T): T {
    return block()
}

/**
 *  2. block: (T) -> T
 *    01.传入的函数带有自身作为参数
 *    02.该函数最后一行需要是调用者对象类型,而且无return
 *    03.把调用者作为it,传入定义的lambda表达式函数域中
 */
fun <T> T.method2(block: (T) -> T): T {
    return block(this)
}

/**
 * 3. block: T.() -> T
 *   01.传入的函数无参
 *   02.该函数最后一行需要是调用者对象类型,而且无return
 *   03.把调用者作为this,传入定义的lambda表达式函数域中
 */
fun <T> T.method3(block: T.() -> T): T {
    Log.d("=======1==this:$this")
    return block()
}

fun main() {

    "==1==".method1 {
        Log.d("======2===this:")
        "";
        // 03. 不能带有return
    }

    "==2==".method2 {
        Log.d("======2===this:$it")
        it
        // 03. 不能带有return
    }

    "==3==".method3 {
        Log.d("======2===this:$this")
        this
        // 0.3 不能带有return
    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值