gpt4 book ai didi

lambda - Kotlin Lambda参数与抽象值

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

最好将lambda函数传递给用作父类的类:将其作为参数传递或在pasrent类中将其定义为抽象lambda,然后在子类中覆盖它?

要将其作为参数传递:

open class Weapon(val someFunction: () -> Unit) {
...
}

class TheWeapon() : Weapon({ ... }) {
...
}

或定义它以在pasrent类中将其定义为抽象lambda,然后在子类中覆盖它:
abstract class Weapon() {
abstract val someFunction: () -> Unit;
...
}

class TheWeapon() : Weapon() {
override val someFunction: () -> Unit = { ... }
...
}

那么哪种解决方案更好用呢?

最佳答案

如果要使用第二种方法,为什么不只使用这种类型的方法来覆盖呢?似乎TheWeapon可以提供lambda本身,并且不将其作为参数,因此您可以将代码从lambda移至抽象函数:

abstract class Weapon {
abstract fun someFunction()
}

class TheWeapon : Weapon() {
override fun someFunction() { ... }
}

如果 TheWeapon通过其构造函数从外部源接收到lambda,则必须采取另一种方式,并且让 Weapon也将lambda用作构造函数参数。

关于lambda - Kotlin Lambda参数与抽象值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49539870/

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