専門委任(lazy,observice)-コトリン
4616 ワード
コットリン公式ライブラリは各種の委任状況に工場方法を提供する.
コットリン氏は、オブジェクトを作成するときに、初期アクセスポイント(使用ポイント)で初期化するのではなくlazy propertiesを提供すると述べた.この章がどのように提供されているかを理解してみましょう.
まず、最初のLazyValueにアクセスすると、
-実際の実行例でLazyValueに初めてアクセスした場合、ram式は初期化されずに実行され、println(「computed!」)が維持されます.その後、LazyValueを再度呼び出すと、LazyValueに格納されている値が呼び出されます.
が実際にlazy()メソッドである論理で デフォルトでは、この論理は単一のスレッド上で実行されます.マルチスレッドが論理を実行できるようにするには、lazy()メソッドのパラメータLazyThreadSafetyModeを使用します.PUBLICATIONにお任せください で再呼び出されると初期化が表示されるのでinitializerは呼び出されずに直接値が返されます.
これは、property値の変更に関する通知を受信するために、リスナーによって提供される観測可能な属性です.Delegates.observate()メソッドには基本的に2つのパラメータがあり、1つ目のパラメータはの2番目のパラメータに渡されるハンドル式は、値が変更されたときに呼び出されます.上記のコードを実行すると が表示されます.
observiceに渡される最初のパラメータの値は、まずnameを初期化し、その後、値を書き込むたびにhandler callbackが呼び出され、印刷ロジックが表示されます. リファレンス
https://kotlinlang.org/docs/delegated-properties.html
Lazy properties
コットリン氏は、オブジェクトを作成するときに、初期アクセスポイント(使用ポイント)で初期化するのではなくlazy propertiesを提供すると述べた.この章がどのように提供されているかを理解してみましょう.
val lazyValue: String by lazy {
println("computed!")
"Hello"
}
fun main() {
println(lazyValue)
println(lazyValue)
}
Lazy()は、ラムダ式をパラメータとして伝達し、Lazyインスタンスを返す方法である.依頼役としても使えます.Lazy()を使用してLazyValueを委任する場合、どうすればいいですか?まず、最初のLazyValueにアクセスすると、
프로퍼티는 초기화 되지 않은 상태
であるため、ramda式が実行されます.LazyValueに値が割り当てられます.次に、プログラムに再度アクセスすると、ram式を実行するのではなくLazyValueに格納された値が呼び出されます.-実際の実行例でLazyValueに初めてアクセスした場合、ram式は初期化されずに実行され、println(「computed!」)が維持されます.その後、LazyValueを再度呼び出すと、LazyValueに格納されている値が呼び出されます.
기본적으로 thread safe하게 동작하며
の値に値が指定されていない場合、initializer(ラムダ式)が実行され、値を保存しながら値が返されます.Observable properties
これは、property値の変更に関する通知を受信するために、リスナーによって提供される観測可能な属性です.Delegates.observate()メソッドには基本的に2つのパラメータがあり、1つ目のパラメータは
초기화 할 값
、2つ目のパラメータは값이 변경 되었을 때 수행 할 핸들러 람다식을 넘겨주면 된다.
である.import kotlin.properties.Delegates
class User {
var name: String by Delegates.observable("<no name>") {
prop, old, new ->
println("$old -> $new")
}
}
fun main() {
val user = User()
user.name = "first"
user.name = "second"
}
https://kotlinlang.org/docs/delegated-properties.html
Reference
この問題について(専門委任(lazy,observice)-コトリン), 我々は、より多くの情報をここで見つけました https://velog.io/@seokgyuhong/프로퍼티-위임lazy-observable-코틀린テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol