Как я могу использовать универсальную функцию расширения в Kotlin для сопоставления классов данных двух типов

#android #kotlin #extension-methods

Вопрос:

У меня есть два класса моделей данных, и я хочу использовать универсальную функцию расширения для сопоставления этих классов и других классов.

Это пример моего кода для сопоставления двух классов:

 fun HomeRequestBodyWithAuthQuery.Client.graphToDomain(): Client =  Client(id = this.id, givenName = this.givenName)  

Я написал эту функцию расширения, но возвращаемое значение содержит ошибку:

 fun lt;G, Tgt; G.graphqlToDomain(): T = T   

введите описание изображения здесь как я могу написать функцию расширения kotlin для этой работы?

Комментарии:

1. Где G в вашем образце? Как я вижу, вы использовали Client.graphToDomain() и возвращаете клиента с отображением. например, T. graphToDomain(): T

Ответ №1:

Вы можете взять свой универсальный тип в качестве параметра и вернуть его.

 fun lt;G, Tgt; G.graphqlToDomain(t: T): T = t