Kotlin语法疑问:MyContext扩展函数req()定义解析
关于Kotlin扩展函数的解惑
嘿,我来帮你把这个Kotlin语法的困惑掰明白!
首先,你看到的fun Foo.bar() = (...)是Kotlin里非常实用的扩展函数语法——简单来说,它允许你在不修改原有类(这里的Foo)源码的前提下,给这个类“凭空”添加新的成员函数,不管这个类是Kotlin写的还是Java写的都适用。
回到你的具体场景:
MyContext是Kotlin数据类,本身没有req()函数LaunchRequest是Java类
如果你的代码是类似这样的:
fun MyContext.req(): LaunchRequest = this.request
那你的判断完全正确!这就是在给MyContext类定义一个名为req()的扩展函数,它的作用就是返回当前MyContext实例中那个名为request、类型为LaunchRequest的变量。
使用的时候也和普通成员函数一样方便,比如你有一个MyContext的实例:
val myCtx = MyContext(request = LaunchRequest(...)) val myRequest = myCtx.req() // 直接调用扩展函数,拿到LaunchRequest对象
扩展函数的好处就是能让代码更具可读性,还能避免写很多工具类的静态方法,把相关功能直接“挂靠”到对应的类上,用起来顺手多了~
内容的提问来源于stack exchange,提问作者syim
相关产品推荐
相关产品推荐

