Kotlin多平台编程中的数据类

dsekswqp  于 2023-04-07  发布在  Kotlin
关注(0)|答案(3)|浏览(145)

我是Kotlin的新手,想构建一个多平台的应用程序。对于公共部分,我想使用包含平台特定函数的数据类。
是否可以在特定于平台的声明中使用Kotlin数据类?
类似于

expect data class Foo(val bar: String)

最好的问候

czq61nw1

czq61nw11#

来自Kotlin在Platform Specific Declarations上的文档:
预期声明从不包含任何实现代码。
由于数据类生成实现,它们不能在expect声明中使用。actual实现可以是数据类,因为它不改变声明类的语义。

bttbmeg0

bttbmeg02#

expect class Some {}

actual data class Some(val test: UUID)
abithluo

abithluo3#

下面是我的工作示例:
EXPECT(commonMain)

@Serializable
expect class Person {
    val id: Long
    val name: String
}

实际(jvmMain)

@Serializable
actual data class Person (
    @SerialName("_id")
    actual val id: Long = System.currentTimeMillis()
    actual val name: String
)

实际(jsMain)

@Serializable
actual data class Person (
    @SerialName("_id")
    actual val id: Long = Date.now().toLong()
    actual val name: String
)

相关问题