3

在科特林源代码的源代码实现string.kt的,我不明白如何实现String.kt的长度,它是如下:我无法理解在科特林

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??

在哪里实现长度函数?

+0

当你写这个''abc“.length'并返回你想要的长度字符串? –

+0

是的,我可以得到正确的结果。我只想知道在哪里实施kotlin源代码。我已经添加了上面的String.kt。 –

回答

9

字符串函数是Kotlin认为Intrinsic函数的示例。它们是基于它们正在运行的平台而定义的,您将无法在源代码中找到它们的实现。

对于JVM,它们将直接映射到相应的本机java.lang.String方法。这可以确保没有运行时间开销并利用在java标准库中完成的优化。

+0

正如你所说,我可以找到内在函数吗? –

+0

没有'实现',当这些函数被调用时,编译器会执行一些自定义代码生成来产生结果。一些映射函数可以在https://github.com/JetBrains/kotlin/blob/master/compiler/backend/src/org/jetbrains/kotlin/codegen/intrinsics/IntrinsicMethods.java找到。 – Kiskae