Pay*_*yar 7 android operator-overloading init invoke kotlin
我正在研究 kotlin 中的运算符重载,并且遇到了invoke方法。当我对它进行研究时,我发现它的工作原理与init每个类的构造函数非常相似。我无法理解其中的差异,它们似乎很相似,因为我们在invoke方法中所做的一切,也可以在构造函数中完成init。
那么它们有什么区别以及我们什么时候应该使用它们呢?
小智 7
这不是一个很好的比较。init每次实例化类时都会运行该块,使用我们接下来将看到的任何类型的构造函数。但该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())
}
Run Code Online (Sandbox Code Playgroud)
输出:
name: lionel
age: 35
name: lionel
age: 36
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2515 次 |
| 最近记录: |