3

でstring.ktのソースコードの実装を理解することはできません、私はString.ktの長さを実装する方法を理解することはできません、それは以下の通りです:私はkotlinソースコードで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??

ここで、長さ関数を実装するには?

+0

このabc ".length'を書いて返すときには、文字列の長さが必要ですか? –

+0

ええ、私は正しい結果を得ることができます。私はkotlinのソースコードをどこに実装するかを知りたいだけです。上記のString.ktを追加しました。 –

答えて

9

文字列関数は、コトリンが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