我是Kotlin的新手,想构建一个多平台的应用程序。对于公共部分,我想使用包含平台特定函数的数据类。是否可以在特定于平台的声明中使用Kotlin数据类?类似于
expect data class Foo(val bar: String)
最好的问候
czq61nw11#
来自Kotlin在Platform Specific Declarations上的文档:预期声明从不包含任何实现代码。由于数据类生成实现,它们不能在expect声明中使用。actual实现可以是数据类,因为它不改变声明类的语义。
expect
actual
bttbmeg02#
expect class Some {} actual data class Some(val test: UUID)
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 )
3条答案
按热度按时间czq61nw11#
来自Kotlin在Platform Specific Declarations上的文档:
预期声明从不包含任何实现代码。
由于数据类生成实现,它们不能在
expect
声明中使用。actual
实现可以是数据类,因为它不改变声明类的语义。bttbmeg02#
abithluo3#
下面是我的工作示例:
EXPECT(commonMain)
实际(jvmMain)
实际(jsMain)