Kotlin –lazyとlateinitによるプロパティの初期化
Kotlinライブラリは、プロパティ宣言用に2つの異なるアクセス修飾子を提供します。
この記事では、これら2つのアクセス修飾子の違いと、アプリケーションでそれらを使用する方法について説明します。
Lateinit
「lateInit」変数を作成するには、その変数のアクセス修飾子としてキーワード「lateInit」を追加する必要があります。以下は、Kotlinで「lateInit」を使用するために従う必要のある一連の条件です。
-
可変変数で「lateInit」を使用します。つまり、「lateInit」で「var」キーワードを使用する必要があります。
-
「lateInit」は、NULL不可のデータ型でのみ許可されます。
-
「lateInit」はプリミティブデータ型では機能しません。
-
「lateInit」は、変数プロパティに getterがない場合に使用できます。 およびセッター メソッド。
例
変数をlateInitとして宣言します プログラム全体で同じものにアクセスする方法を見ていきます。
class Tutorial { lateinit var name : String fun checkLateInit(){ // checking whether the value is assigned or not if(this::name.isInitialized) println("Your value is not assigned"); else{ // initializing name name = "www.tutorialspoint.com/" println(this.name) // this will return true } } } fun main() { var obj=Tutorial(); obj.checkLateInit(); }
出力
コードを実行すると、次の出力が生成されます-
www.tutorialspoint.com/
遅延初期化
効率的なメモリ管理のために、Kotlinはレイジー初期化と呼ばれる新機能を導入しました。 怠惰な キーワードを使用すると、オブジェクトは呼び出されたときにのみ作成されます。それ以外の場合、オブジェクトは作成されません。 lazy() ラムダを受け取り、 lazyのインスタンスを返す関数です。 これは、それが適用された怠惰なプロパティの代理として機能することができます。オブジェクトの不要な初期化を防ぐように設計されています。
-
Lazyは、NULL不可能な変数でのみ使用できます。
-
変数はvalのみにすることができます。 「var」 許可されていません。
-
オブジェクトは一度だけ初期化されます。その後、キャッシュメモリから値を受け取ります。
-
オブジェクトは、アプリケーションで使用されるまで初期化されません。
例
この例では、レイジー変数 "myName"を宣言します。 コードのこの部分への呼び出しは1回だけ発生し、値が初期化されると、アプリケーション全体で値が記憶されることがわかります。遅延初期化を使用して値が割り当てられると、再割り当てすることはできません。
class Demo { val myName: String by lazy { println("Welcome to Lazy declaration"); "www.tutorialspoint.com" } } fun main() { var obj=Demo(); println(obj.myName); println("Second time call to the same object--"+obj.myName); }
出力
コードを実行すると、次の出力が生成されます-
Welcome to Lazy declaration www.tutorialspoint.com Second time call to the same object--www.tutorialspoint.com
-
CSSz-indexプロパティの使用
z-indexプロパティは位置とともに使用されます レイヤーの効果を作成するプロパティ。どの要素を上に、どの要素を下に配置するかを指定できます。 例 次のコードを実行して、 z-indexを実装してみてください。 プロパティ- <html> <head> </head> <body> <div style = "background-color:blue; width:300px; height:100px;
-
CSSで使用するプロパティの表示
すべてのHTML要素には、CSSDisplayプロパティにデフォルト値が設定されています。このプロパティは、要素がドキュメントでどのようにレンダリングされるかを指定します。 注 −デフォルトの表示プロパティはオーバーライドできますが、要素のタイプは変更されず、ドキュメントでの表示動作だけが変更されます。 以下は、CSSDisplayプロパティの値の一部です- ブロック インライン インラインブロック なし 例 CSSDisplayプロパティの例を見てみましょう- <!DOCTYPE html> <html> <head> <title>