web-dev-qa-db-fra.com

Pourquoi cette méthode Kotlin a-t-elle des crochets fermés?

À quoi servent les astuces dans l'extrait ci-dessous?

Pourquoi les ajouter autour de la fun is(amount:Int ):Boolean { ... }?

verifier.`is`(amount)
30
Kris Roofe

C'est parce que is est un mot-clé réservé dans Kotlin. Étant donné que Kotlin est censé être interopérable avec Java et is est un nom de méthode (identificateur) valide en Java, les astuces sont utilisées pour échapper à la méthode afin qu'elle puisse être utilisée en tant que méthode sans la confondre en tant que mot clé. Sans elle, cela ne fonctionnera pas car ce serait une syntaxe non valide.

Ceci est mis en évidence dans la documentation Kotlin :

Échappement pour Java qui sont des mots clés dans Kotlin

Certains des mots clés Kotlin sont des identifiants valides en Java: in, object, is, etc. Si une bibliothèque Java utilise un Kotlin mot-clé pour une méthode, vous pouvez toujours appeler la méthode en l'échappant avec le caractère backtick (`)

foo.`is`(bar)
46
Li357

Il vous permet d'appeler une méthode Java dont le nom est un mot-clé Kotlin. Cela ne fonctionnera pas si vous omettez les astuces.

4
wero

Le backtick est une "solution de contournement" pour vous permettre d'appeler des méthodes qui ont un nom représentant un mot clé Kotlin.

Voir kotlinlang :

Certains des mots clés Kotlin sont des identificateurs valides en Java: in, object, is, etc. Si une bibliothèque Java utilise un mot clé Kotlin pour une méthode, vous pouvez toujours appeler la méthode en l'échappant avec le caractère backtick (`)

4
GhostCat

is dans la liste des Kotlin réservés mots Pour utiliser le mot réservé Kotlin (tel que is ou object) pour le nom de la fonction/classe, vous devez l'envelopper aux retours en arrière

1
gildor

Certains des mots clés Kotlin sont des identifiants valides en Java: dans, objet, is, etc. Si une bibliothèque Java utilise un mot clé Kotlin pour une méthode, vous pouvez toujours appeler la méthode en l'échappant avec le caractère backtick (`)

https://kotlinlang.org/docs/reference/Java-interop.html

1
Zoli Szabó