gpt4 book ai didi

android - invoke 和 init kotlin 之间的区别

转载 作者:行者123 更新时间:2023-12-04 23:59:04 33 4
gpt4 key购买 nike

我正在研究 kotlin 中的运算符重载,我遇到了 invoke 方法。当我对它进行研究时,我发现它的工作方式与每个类的 init 构造函数非常相似。我无法理解其中的区别,它们看起来很相似,因为我们在 invoke 方法中所做的一切,也可以在 init 构造函数中完成。

那么它们有什么区别,我们应该在什么时候使用它们?

最佳答案

这不是一个很好的比较。每次实例化类时都会运行 init block ,使用我们接下来将看到的任何类型的构造函数。但是 invoke 方法可以被多次调用,就像类的任何其他方法一样。假设您想在代码的不同部分将一个类的所有值作为字符串返回。您可以在 invoke 中实现它,并在任何需要的地方调用它,而无需命名函数。

例子:

class Person(val name :String,var age:Int) {

fun incrementAge(){
age =age + 1
}

operator fun invoke():String {

return "name: $name \nage: $age\n"
}
}

fun main() {

val x = Person("lionel",35)
println(x())
x.incrementAge()
println(x())
}

输出:

name: lionel 
age: 35

name: lionel
age: 36

关于android - invoke 和 init kotlin 之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68374235/

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