我目前正在使用kotlin开发多平台模块。为此,我依靠expect
/actual
mechanism。
我在Common.kt
中声明了一个简单的类:
expect class Bar constructor(
name: String
)
我想在通用方法(也出现在Common.kt
中)中使用定义的类:
fun hello(bar: Bar) {
print("Hello, my name is ${bar.name}")
}
实际的实现在Jvm.kt
中定义:
actual data class Bar actual constructor(
val name: String
)
问题是我的hello
函数内部出现以下错误
未解决的参考:名称
我在做什么错了?
答案 0 :(得分:0)
它也应该在val name
部分的expect
中,无论是在构造函数参数列表中还是作为成员属性。
答案 1 :(得分:0)
预期的类构造函数不能具有属性参数
因此,有必要使用val name: String
“ Bar”的实际构造函数没有相应的预期声明
但是,为了使实际构造函数与期望的声明匹配,参数的数量必须相同。这就是为什么除了存在属性之外,还在构造函数中还添加了{strong}参数的原因。{p}
name: String
注意:如果我们将构造函数保留为预期类的空白,则会看到IDE在当前类中添加构造函数以解决不兼容问题时的抱怨。
GL