Swift 到 Kotlin:协议到接口,使用泛型

Swift to Kotlin: Protocol to Interface, with generics

过去几天一直在做这个小代码翻译。这真的只是 Kotlin 语法难倒我...

Swift:

protocol BaseProtocol {
    associatedtype VMType = BaseViewModel
    var viewModel: VMType { get set }
}

public class BaseViewModel {
    var moduleModel: ModuleModel
    required public init(moduleModel: ModuleModel) {
        self.moduleModel = moduleModel
    }
}

这是我带到 Kotlin 的东西,(它是接口协议让我很困惑,主要是关于泛型)

科特林:

interface BaseInterface<VMType> {    // Not sure if this is correct
    // protocol code...
}

class BaseViewModel(internal var moduleModel: ModuleModel)

我相信我已经正确构建了我的 BaseViewModel,但如果需要调整,我也会洗耳恭听。

提前感谢您的任何建议!

我不是 swift 程序员,如果我错了请纠正我。您的协议类型是否受限于 BaseViewModel class?如果是,您也可以在接口中声明一个有界类型。

interface BaseInterface<T : BaseViewModel>

此外,由于您受限于 BaseViewModel class,请务必通过添加 open 修饰符将其设置为可继承。

open class BaseViewModel(var moduleModel: ModuleModel)