3

Dans le code source Kotlin source, je ne peux pas comprendre comment mettre en œuvre la longueur de String.kt, il est comme suit:Je ne peux pas comprendre le code de mise en œuvre string.kt dans Kotlin

package kotlin             
public class String : Comparable<String>, CharSequence { 
companion object {} 

/** 
* Returns a string obtained by concatenating this string with the string representation of the given [other] object. 
*/ 
public operator fun plus(other: Any?): String 

public override val length: Int 

public override fun get(index: Int): Char 

public override fun subSequence(startIndex: Int, endIndex: Int): CharSequence 

public override fun compareTo(other: String): Int} 

var len:Int = "abc".length; // len = 3 where to run the length??

où implémenter la fonction de longueur?

+0

lorsque vous écrivez ce '' abc ".length' et en retour vous voulez la longueur de la chaîne? –

+0

oui, je peux obtenir le bon résultat. Je veux juste savoir où implémenter dans le code source kotlin. J'ai ajouté le String.kt ci-dessus. –

Répondre

9

Les fonctions de chaîne sont des exemples de ce que Kotlin considère comme Intrinsic fonctions. Ils sont définis en fonction de la plateforme sur laquelle ils s'exécutent et vous ne pourrez pas en trouver une implémentation dans le code source.

Pour la JVM, ils seront mappés directement aux méthodes java.lang.String natives correspondantes. Cela garantit qu'il n'y a pas de surcharge d'exécution et exploite les optimisations effectuées dans la bibliothèque standard Java.

+0

comme vous l'avez dit, puis-je trouver les fonctions intrinsèques ???? –

+0

Il n'y a pas de 'implémentations', quand ces fonctions sont appelées, le compilateur fait une génération de code personnalisé pour produire le résultat. Certaines des fonctions mappées peuvent être trouvées à https://github.com/JetBrains/kotlin/blob/master/compiler/backend/src/org/jetbrains/kotlin/codegen/intrinsics/IntrinsicMethods.java – Kiskae