将属性从一个数据 class 转换为另一个数据 class (subclasses)

Convert attributes from one data class to another data class (subclasses)

你好)。需要一些 help.I 知道如何将数据从 A class 传输到 B class,但我不知道如何从子 class A.A1 传输数据 - 其中包括 A class, 到包含 B class.

的子class B.B1

我的Aclass:

data class SpaceXProperty(
   val  flight_number: Int,
   val launch_year: Int,
   val links: Links
){

   data class Links(val mission_patch: String?)
}

我的乙class:

data class Models(val flightNumber: Int,
                  val mlinks: Mlinks
)
{
    data class Mlinks(val mission_patch: String?)
}

我创建了下一个函数

fun List<SpaceXProperty>.asDomainModel(): List<Models>{
   return map {
      Models(
         flightNumber = it.flight_number,
         llinks = it.links //here i got error type mismatch "required: Models.Mlinks found: SpaceXProperty.Links"

      )
   }
}

所以这就是为了避免这种情况 - 我将 B class 更改为下一个

data class Models(val flightNumber: Int,
                  val llinks: SpaceXProperty.Links
                  
)

我是 kotlin 的新手,所以不知道如何正确地将数据从一个子 class 映射到另一个。请帮忙

我试图将下一个函数放在有趣的地方 List.asDomainModel(),但它不起作用。

fun List<SpaceXProperty.Links>.asDDomainmodel(): List<Models.Llinks>{
   return map {
     Models.Llinks(
         mission_patch = it.mission_patch) }
}

我完全从“https://api.spacexdata.com/v3/launches”获取数据,并希望将此数据粘贴到另一个数据 class,如“存储库”。在这里 我得到帮助,我需要使用 subclass,但在下一步我遇到了问题。

几个小错误:

  • 在第一个 asDomainModel 函数中,您使用 llinks 属性 而不是 mlinks
  • 正在尝试将 Links 的对象分配给 Mlinks

以下代码解决了问题

fun List<SpaceXProperty>.asDomainModel() = map {
    Models(
        flightNumber = it.flight_number,
        mlinks = Models.Mlinks(it.links.mission_patch)
    )
}

原来的类保持原样

data class SpaceXProperty(
    val flight_number: Int,
    val launch_year: Int,
    val links: Links) {
    data class Links(val mission_patch: String?)
}

data class Models(val flightNumber: Int, val mlinks: Mlinks) {
    data class Mlinks(val mission_patch: String?)
}