gpt4 book ai didi

Kotlin:我可以将函数分配给 main 中伴随对象中的变量吗?

转载 作者:行者123 更新时间:2023-12-02 01:26:08 26 4
gpt4 key购买 nike

刚接触 kotlin,想知道是否可以动态分配伴随对象变量的函数。阅读此处的文档和一些答案,但没有提及这一点。

class Printer {
companion object {
fun printAnything() {
println("printing anything..")
}
}
}

fun printA() {
println("printing A!")
}

fun main(args: Array<String>) {
printA()
Printer.printAnything = :: printA // doesn't compile, perhaps a different way?
}

最佳答案

您无法重新分配使用 fun 声明的函数。它总是指向同一个函数。但是您可以创建一个 var 来保存对函数的引用。保存函数的 varval 属性可以作为函数调用,就像它是 fun 声明一样。

fun defaultPrintAnything() {
println("printing anything...")
}

var printAnything = ::defaultPrintAnything

fun printA() {
println("printing A!")
}

fun main() {
printAnything() // calls defaultPrintAnything
printAnything = ::printA
printAnything() // calls printA
}

您可以在任何您喜欢的地方创建这样的变量,无论它是否在伴生对象中。所以是的,您可以这样创建您的 Printer 伴随对象:

class Printer {
companion object {
var printAnything = {
println("printing anything..")
}
}
}

关于Kotlin:我可以将函数分配给 main 中伴随对象中的变量吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74625888/

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