J'essaie de comprendre le constructeur HTML dans Kotlin/Ktor. Le example here utilise le constructeur HTML pour construire le résultat:Comment extraire des parties de code dans des variables locales dans Kotlin en utilisant le constructeur HTML de Ktor?
call.respondHtml {
head {
title { +"HTML Application" }
}
body {
h1 { +"Sample application with HTML builders" }
widget {
+"Widgets are just functions"
}
}
}
Je suis en train d'extraire le corps dans une variable comme ceci:
val block: HTML.() -> Unit = {
head {
title { +"HTML Application" }
}
body {
h1 { +"Sample application with HTML builders" }
}
}
call.respondHtml(block)
Maintenant, j'obtiens l'erreur de compilation suivante:
Error:(37, 22) Kotlin: None of the following functions can be called with the arguments supplied:
public suspend fun ApplicationCall.respondHtml(status: HttpStatusCode = ..., versions: List<Version> = ..., cacheControl: CacheControl? = ..., block: HTML.() -> Unit): Unit defined in org.jetbrains.ktor.html
public suspend fun ApplicationCall.respondHtml(status: HttpStatusCode = ..., block: HTML.() -> Unit): Unit defined in org.jetbrains.ktor.html
Lorsque j'ajoute le premier argument (optionnel), cela fonctionne de nouveau: call.respondHtml(HttpStatusCode.OK, block)
.
Pourquoi ça ne marche pas, quand j'essaie simplement d'extraire le corps dans une variable?
L'utilisation de paramètres nommés ne le corrige pas, mais l'explication est logique. – peq