美文网首页
Kotlin 嵌套函数

Kotlin 嵌套函数

作者: 七零八落问号 | 来源:发表于2020-01-27 14:08 被阅读0次

百度了一下没有找到嵌套函数的本质,在这里做个记录

示例类和方法

class AClass {
    fun outer(): Unit {
        fun nesting(): Unit {}
        nesting()
    }
}

以上代码通过查看Bytecode,可以看到定义 nesting() 的行,对应

GETSTATIC com/jctv/kotlintest/AClass$outer$1.INSTANCE : Lcom/jctv/kotlintest/AClass$outer$1;

而调用 nesting() 的行则对应

INVOKEVIRTUAL com/jctv/kotlintest/AClass$outer$1.invoke ()V

然后往下,发现对应的生成的一个类

final class com/jctv/kotlintest/AClass$outer$1
        extends kotlin/jvm/internal/Lambda
        implements kotlin/jvm/functions/Function0 {
  
    public final invoke()V
    public final static Lcom/jctv/kotlintest/AClass$outer$1; INSTANCE
}

事实上翻译成Java代码,大概则对应

public final class AClass {
    public final void outer() {
        AClass$outer$1.INSTANCE.invoke();
    }
}

final class AClass$outer$1 {
    public final static AClass$outer$1 INSTANCE;
    static{
        INSTANCE = new AClass$outer$1();
    }
    public final void invoke() {
    }
}

以上非直接翻译,有兴趣了解具体情况,可以自行查看Kotlin Bytecode

相关文章

  • Kotlin 嵌套函数

    百度了一下没有找到嵌套函数的本质,在这里做个记录 示例类和方法 以上代码通过查看Bytecode,可以看到定义 n...

  • 快速上手 Kotlin 开发系列之函数与函数嵌套

    在前面的文章中简单地介绍了 Kotlin 中函数的声明,本节将介绍 Kotlin 另外一种语法特性:函数嵌套 函数...

  • Kotlin 类和对象

    Kotlin 类可以包含:构造函数和初始化代码块(init)、函数、属性、嵌套类和内部类、对象声明 1.使用关键字...

  • kotlin开发者大会部分总结

    一.kotlin代码简化 中缀表达式 作用域函数 注意各自使用场景,不要嵌套 扩展函数比如px2dp 比如扩展po...

  • 类成员 类可以包含: 构造函数与初始化块 函数 属性 嵌套类与内部类 对象声明 继承 在 Kotlin 中所有类都...

  • kotlin 嵌套和内部类

    Kotlin 嵌套类 与Java类似,Kotlin允许您在另一个称为嵌套类的类中定义一个类 由于嵌套类是其封闭类的...

  • Python函数嵌套-作用域-闭包-LEGB-函数销毁

    1 函数嵌套 一个函数中存在另外一个函数(定义/调用),这种方式我们称之为函数嵌套。所以:函数的嵌套主要分为嵌套调...

  • Kotlin3.6局部函数和扩展

    Kotlin提供了一个简洁的方案来减少重复代码:可以在函数中嵌套函数。这样既可以获得所需的结构,也无需额外的语法开...

  • 嵌套函数和匿名函数

    1 嵌套函数 1 变量工作域 嵌套函数和主函数之间变量可以互相访问。其中嵌套函数直接可以用主函数区间的变量,主函数...

  • 每天学一点Swift----闭包(一)

    五.嵌套函数 1. Swift还支持在函数体内定义函数,这种在函数体内定义的函数称为嵌套函数 2.默认情况下,嵌套...

网友评论

      本文标题:Kotlin 嵌套函数

      本文链接:https://www.haomeiwen.com/subject/nbfethtx.html