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)
过去几天一直在做这个小代码翻译。这真的只是 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)