Kotlinでジェネリック拡張メソッドを作成するにはどうすればよいですか?

AdamMc331

私が取り組んでいるプロジェクトでは、オプションがnullの場合にデフォルト値を返すために、いくつかのタイプの拡張メソッドをいくつか作成していることに気付きました。

たとえば、Boolean?オブジェクトがあり、それをデフォルトでfalseに設定された条件式で使用したい場合は、次のように記述します。

if (myOptional?.default(false)) { .. }

私はこれをいくつかのタイプのために書いた:

fun Boolean?.default(default: Boolean): Boolean {
    return this ?: default
}

fun Long?.default(default: Long): Long {
    return this ?: default
}

fun Int?.default(default: Int): Int {
    return this ?: default
}

これを一般的に行う方法があるかどうか疑問に思っているので、すべての型に使用できる1つの拡張メソッドを記述できますか?

JBニゼット

私はそれを行わず?:、すべてのKotlin開発者が知っておくべき標準の演算子を使用します。これはより簡潔です。

しかし、あなたの質問に答えるために:

fun main(args: Array<String>) {
    val k1: Long? = null
    val k2: Long? = 4L

    println(k1.default(0L)) // prints 0
    println(k2.default(0L)) // prints 4
}


fun <T> T?.default(default: T): T {
    return this ?: default
}

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

Kotlinでジェネリック拡張メソッドを作成するにはどうすればよいですか?

分類Dev

非同期メソッドのジェネリック拡張メソッドを作成するにはどうすればよいですか?

分類Dev

ジェネリッククラスメソッドの正しい拡張メソッドを取得するにはどうすればよいですか?

分類Dev

Kotlinで配列のコンパニオンオブジェクトの拡張メソッドを作成するにはどうすればよいですか?

分類Dev

拡張メソッドでジェネリック型のメンバーを操作するにはどうすればよいですか?

分類Dev

Swiftでジェネリック拡張を作成するにはどうすればよいですか?

分類Dev

非ジェネリック配列の拡張メソッドを定義するにはどうすればよいですか?

分類Dev

このジェネリック拡張メソッドのResharper構造検索を行うにはどうすればよいですか?

分類Dev

ジェネリッククラスオブジェクトを作成するメソッドを作成するにはどうすればよいですか?

分類Dev

C#で、ジェネリックパラメーターFunc <T、TResult>をパラメーターとして持つラムダを受け取る拡張メソッドを作成するにはどうすればよいですか。

分類Dev

ジェネリック型に拡張機能を追加するにはどうすればよいですか?

分類Dev

1つの型変数が文字列でなければならないジェネリック型の拡張メソッドを作成するにはどうすればよいですか?

分類Dev

ジェネリックファクトリメソッドをすばやく作成するにはどうすればよいですか?

分類Dev

特定の拡張メソッドがオブジェクトを「変更」するかどうかを知るにはどうすればよいですか?

分類Dev

JavaScriptで拡張メソッドを作成するにはどうすればよいですか?

分類Dev

Dartで静的拡張メソッドを作成するにはどうすればよいですか?

分類Dev

Func <>でlinq拡張メソッドを作成するにはどうすればよいですか?

分類Dev

反復可能な型によって制約されるジェネリックメソッドを作成するにはどうすればよいですか?

分類Dev

クラスと文字列を渡すジェネリックにメソッドを作成するにはどうすればよいですか?

分類Dev

配列に要素を挿入するためのジェネリックメソッドを作成するにはどうすればよいですか?

分類Dev

List <Object>をObservableList <S>とMap <T、S>に変換するジェネリックメソッドを作成するにはどうすればよいですか?

分類Dev

Tによって動作が異なるジェネリックメソッドを作成するにはどうすればよいですか?

分類Dev

C#でジェネリックメソッドのオーバーロードを作成するにはどうすればよいですか?

分類Dev

Slickの複数の列を更新するジェネリックメソッドを作成するにはどうすればよいですか?

分類Dev

EF.Functions拡張メソッドを作成するにはどうすればよいですか?

分類Dev

Microsoft.AppCenter.Crashesの拡張メソッドを作成するにはどうすればよいですか

分類Dev

列挙型引数の拡張メソッドを作成するにはどうすればよいですか?

分類Dev

冗長なコードを減らしてジェネリックメソッドを作成するにはどうすればよいですか?

分類Dev

拡張メソッドをライブラリに配置するにはどうすればよいですか?

Related 関連記事

  1. 1

    Kotlinでジェネリック拡張メソッドを作成するにはどうすればよいですか?

  2. 2

    非同期メソッドのジェネリック拡張メソッドを作成するにはどうすればよいですか?

  3. 3

    ジェネリッククラスメソッドの正しい拡張メソッドを取得するにはどうすればよいですか?

  4. 4

    Kotlinで配列のコンパニオンオブジェクトの拡張メソッドを作成するにはどうすればよいですか?

  5. 5

    拡張メソッドでジェネリック型のメンバーを操作するにはどうすればよいですか?

  6. 6

    Swiftでジェネリック拡張を作成するにはどうすればよいですか?

  7. 7

    非ジェネリック配列の拡張メソッドを定義するにはどうすればよいですか?

  8. 8

    このジェネリック拡張メソッドのResharper構造検索を行うにはどうすればよいですか?

  9. 9

    ジェネリッククラスオブジェクトを作成するメソッドを作成するにはどうすればよいですか?

  10. 10

    C#で、ジェネリックパラメーターFunc <T、TResult>をパラメーターとして持つラムダを受け取る拡張メソッドを作成するにはどうすればよいですか。

  11. 11

    ジェネリック型に拡張機能を追加するにはどうすればよいですか?

  12. 12

    1つの型変数が文字列でなければならないジェネリック型の拡張メソッドを作成するにはどうすればよいですか?

  13. 13

    ジェネリックファクトリメソッドをすばやく作成するにはどうすればよいですか?

  14. 14

    特定の拡張メソッドがオブジェクトを「変更」するかどうかを知るにはどうすればよいですか?

  15. 15

    JavaScriptで拡張メソッドを作成するにはどうすればよいですか?

  16. 16

    Dartで静的拡張メソッドを作成するにはどうすればよいですか?

  17. 17

    Func <>でlinq拡張メソッドを作成するにはどうすればよいですか?

  18. 18

    反復可能な型によって制約されるジェネリックメソッドを作成するにはどうすればよいですか?

  19. 19

    クラスと文字列を渡すジェネリックにメソッドを作成するにはどうすればよいですか?

  20. 20

    配列に要素を挿入するためのジェネリックメソッドを作成するにはどうすればよいですか?

  21. 21

    List <Object>をObservableList <S>とMap <T、S>に変換するジェネリックメソッドを作成するにはどうすればよいですか?

  22. 22

    Tによって動作が異なるジェネリックメソッドを作成するにはどうすればよいですか?

  23. 23

    C#でジェネリックメソッドのオーバーロードを作成するにはどうすればよいですか?

  24. 24

    Slickの複数の列を更新するジェネリックメソッドを作成するにはどうすればよいですか?

  25. 25

    EF.Functions拡張メソッドを作成するにはどうすればよいですか?

  26. 26

    Microsoft.AppCenter.Crashesの拡張メソッドを作成するにはどうすればよいですか

  27. 27

    列挙型引数の拡張メソッドを作成するにはどうすればよいですか?

  28. 28

    冗長なコードを減らしてジェネリックメソッドを作成するにはどうすればよいですか?

  29. 29

    拡張メソッドをライブラリに配置するにはどうすればよいですか?

ホットタグ

アーカイブ