在Kotlin中,带接收者的函数字面量(receiver function literal)

带接收者的函数字面量(receiver function literal)

Kotlin 中,R.()->T 是一种函数类型声明,属于带接收者的函数字面量(receiver function literal)。

1. 结构分解

  • R 表示接收者类型(receiver type)
  • () 表示函数参数列表(这里为空)
  • T 表示返回值类型

2. 语义含义

  • 这种声明表示一个在 R 类型上下文(作用域)中执行的函数,可以访问 R 的成员(属性和方法),最终返回 T 类型结果。

3. 与普通函数类型的区别

  • 普通函数(R) -> T 需要显式接收参数
  • 带接收者R.()->T 隐含this指向接收者

4. 典型使用场景

  • DSL 构建(如 Android 的 Kotlin DSL )

  • 扩展函数参数

  • 类型安全的构建器模式

    示例说明:

      // 定义接收者类
      class Person {
          var name = ""
          fun sayHello() = println("Hello, $name")
      }
    
      // 接收带接收者的函数参数
      fun setupPerson(person: Person, block: Person.() -> Unit) {
          person.block()  // 在person上下文中执行block
      }
    
      // 使用
      setupPerson(Person()) {
          name = "Alice"  // 可以直接访问Person的成员
          sayHello()      // 输出:Hello, Alice
      }
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值