知っておく必要のある7つのKotlin開発スキル

一緒に書く習慣を身につけましょう!「ナゲッツデイリーニュープラン・4月更新チャレンジ」に参加して15日目です。クリックしてイベントの詳細をご覧ください

1.kotlinのforループ

  • 最初..
for (i in 0..5) {
    println(i)
}
复制代码

正序出力:0 1 2 3 4 5、これは左閉右閉区間です

  • 二番目until
for (i in 0 until 5) {
    println(i)
}
复制代码

正序出力:0 1 2 3 4、これは左閉右開間隔です

  • 第3downTo
for (i in 5 downTo 0) {
    println(i)
}
复制代码

倒序出力:5 4 3 2 1 0、これは左閉右閉区間です

  • 第4step

これは、次のようなステップサイズです。

for (i in 0 until 5 step 2) {
    println(i)
}
复制代码

出力:0 2 4、ステップサイズが2に設定され、出力が2ごとであることがわかります。

  • 第五中学校zip
for((i, j) in (1..5).zip(5..10))  {
    println("$i -- $j")
}
复制代码

zip2つのパラメーターがサポートされています。出力を参照してください。

image.png

2.use拡張機能

通常、ファイルの出力および入力ストリームからの読み取りと書き込みでは、例外を防ぐために読み取りと書き込みの完了後に出力または入力ストリームを閉じるためにメソッドを呼び出す必要がありcloseますが、要件は要件であり、プログラム開発中に書き込みがありません。

したがって、kotlinはuser、ストリームを閉じるのに役立つ拡張メソッドを提供します。最初に使用法を見てください。

File("").outputStream().use {
}
复制代码

使用後use、プログラムが手動でストリームを閉じる必要はありません。useソースコードを見てください。

image.png

同様に、読み取り/書き込みデータベースcursorも使用をサポートしますuse

3.封印されたsealed class

封印されたクラスは次のように定義されます。

sealed class Kit {
    data class H(val name: String = "")
    data class O(val age: Int = 0)
    data class L(val show: Boolean = false)
}
复制代码

実際、封印されたクラスは抽象クラスと列挙に非常に似ていますが、抽象クラスと列挙とは大きく異なる2つの利点があります。

  • クラス構造階層(抽象クラ​​スと比較して)

抽象クラスの具象実装クラスは、パッケージ内のさまざまな場所で定義できますが、これは管理が非常に不便ですが、封印されたクラスは階層構造になっています密封类的子类只能和密封类定义在同一个类文件中もちろん、kotlin1.4以降のバージョンはそれほど制限されません

  • サブクラスオブジェクトは動的作成をサポートします(列挙と比較して)

Javaでシングルトンを実装する最も安全な方法は、列挙型の実装を使用することです。列挙宣言の各要素の内容は固定されており、パラメーターを外部に渡すことはできません。密封类的子类可以声明为object,这个效果就和枚举元素一样,也可以声明为普通的class,可以外部进行传参创建类的对象

おすすめ

転載: juejin.im/post/7087029690250035236