gpt4 book ai didi

Kotlin 允许在函数中定义数据类,为什么?

转载 作者:行者123 更新时间:2023-12-02 13:12:48 25 4
gpt4 key购买 nike

在 kotlin 中,这是合法的:


fun f1(): Int {
data class Data(val i: Int)

val d = Data(0)

return d.i
}

我想知道在函数中声明数据类的后果是什么。我最好的猜测是数据类的范围是函数,但我在文档中没有找到任何提到这一点的内容。

最佳答案

这称为 本地类 . documentation 中提到了它们。但只是他们不能有可见性修饰符。

  • 您不能在声明它的函数之外的任何地方访问本地类。
  • 它可以访问包含类的任何成员,包括私有(private)成员。
  • 它可以访问声明函数
  • 范围内的任何局部变量或方法参数。

    你可以看看 Java's local classes了解更多信息。应该基本一样。

    一个典型的用例是对某些接口(interface)进行一次性实现。
    fun main() {
    val f1 = f1()

    println(f1.x)
    println(f1.y)
    }

    interface Data {
    val x : Int
    val y : Int
    }

    fun f1(): Data {
    data class SpecificData(override val x: Int, override val y: Int) : Data

    return SpecificData(5, 10)
    }

    关于Kotlin 允许在函数中定义数据类,为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56539928/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com