义齿
infix
infixキーワードは、関数を読み取り可能に表すキーワードです.
オブジェクトとオブジェクトの間で使用される関数として表示できます.
infix fun String.add(other : String): String {
return this + other
}
fun main() {
val price = "3000"
println(price add "원")
}
- 결과 -
3000원
主に拡張関数に適用されます.使い方も簡単です.
問題は、私にとって、関数を書くように書くと、毒性がよく見えるので、このような表現は使いません.
inline
infixは思ったより簡単だったのでinlineを勉強しました
inlineを学ぶには、一級関数を理解する必要があります.
一級関数について、正~~は簡単に分かりやすく説明して、関数をパラメータとする関数だと思っています.(高次関数、Ram多項式、匿名関数など)
コトリンは、これらの1級関数が関数式プログラミングをサポートしていると考えているかもしれません.
一級関数について説明すると長くなるのでそのままスキップしましょうハハ
fun doSomething(body : () -> Unit) {
body()
}
fun callFunction() {
doSomething { println("문자열 출력!") }
}
このようなエラーコードがある場合Javaに変換します.
public void callFunction() {
doSomething( new Function() {
@Override
public void invoke() {
System.out.println("문자열 출력!");
}
});
}
このようにして機能オブジェクトを作成します.そのため、この現象を防ぐことができるのはinlineです.
inline fun doSomething(body : () -> Unit) {
body()
}
fun callFunction() {
doSomething { println("문자열 출력!") }
}
単純な内連さえあれば.public void callFunction() {
System.out.println("문자열 출력!");
}
私たちが望む方向にjavaコードに変換します!インラインをうまく利用した関数があります.それはScopeFunctionsです.
doを使用する例を見てみましょう.
@kotlin.internal.InlineOnly
@SinceKotlin("1.1")
public inline fun <T> T.also(block: (T) -> Unit): T {
contract {
callsInPlace(block, InvocationKind.EXACTLY_ONCE)
}
block(this)
return this
}
fun main() {
val prices = listOf(3000, 5000, 6000)
prices.also {
println("Total Price : ${it.sum()}")
}
}
- 결과 -
Total Price : 14000
関数がinlineを利用していることもわかります.性能の影響は微々たるものである
それは必ずinlineを使って、資源の効率がいいと思います.
実際、インライン関数タイプのパラメータは、予想されるパフォーマンスに与える影響は小さい.
理由:JVMは既にインラインされています.△JVMは神様ですか.
それはいったいいつ使うのか。
最初は1級関数がヒントであることを知っておく必要があります
高次関数を作成する場合はinlineを使用することが望ましい.
inlineを使用せずに高次関数を作成すると、変更したjavaコードが匿名オブジェクトを生成するコストを決定できます.
したがって、inlineを適用すると、最初の例のように、私たちが望む方向に変換できることを確認できます.
に感銘を与える
JVMのメリット
ますます開発者に便利になったような気がします.
以前なら、変換プロセスのすべてのコードを考えます.
実際のコンピュータパイプを考慮して符号化すべきです.
JVMは全て対応できてとても良かったです
しかし、このような事実も勉強を通じてこのような役を演じていると感じました.
勉強しないとJVMの機能がわからないかもしれません
そしてコットリンにはいろいろなキーワードがあります.
本当にたくさん勉強しなければなりません.
Reference
この問題について(义齿), 我々は、より多くの情報をここで見つけました https://velog.io/@boo105/infix-와-inlineテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol