Во-первых, я новичок в языке программирования Kotlin.Таким образом, ключевые слова и понятия, такие как inline
, reified
и crossinline
, еще недостаточно ясны в моей голове.В приведенном ниже примере кода я использую эти ключевые слова, потому что мне нужно знать тип T
во время выполнения, чтобы сериализовать и десериализовать его до и после выполнения веб-запросов.
Это post
функция класса ApiClient
:
inline fun <reified T> post(entity: T, crossinline completion : (entity : T?, errorStatusCode: Int?) -> Unit) {
performRequest(
httpMethod = Request.Method.POST,
entity = entity,
completion = completion)
}
Затем я вызываю эту функцию из PassengerRepositoryImpl
:
override fun register(passenger: Passenger, completion: (passenger: Passenger?, errorStatusCode: Int?) -> Unit) {
apiClient.post(passenger, completion)
}
Моя проблема в том, что мои параметры entity
и completion
всегда «не найден» внутри функции записи, как вы можете видеть на следующих изображениях:
passenger
правильно передается в post
функцию:
passenger is correctly passed to post
function">
Но параметр entity
не найден в post
теле.
entity">
Мой вопрос: как решитьЭта проблема?Я что-то путаю?
Спасибо за помощь.