[解決済み] Kotlinの複数変数let
2022-04-23 02:58:16
質問
kotlinで複数のnullable変数に対して複数のletを連鎖させる方法はありますか?
fun example(first: String?, second: String?) {
first?.let {
second?.let {
// Do something just if both are != null
}
}
}
つまり、こんな感じ。
fun example(first: String?, second: String?) {
first?.let && second?.let {
// Do something just if both are != null
}
}
解決方法は?
もし興味があれば、これを解決するための私の2つの関数を紹介します。
inline fun <T: Any> guardLet(vararg elements: T?, closure: () -> Nothing): List<T> {
return if (elements.all { it != null }) {
elements.filterNotNull()
} else {
closure()
}
}
inline fun <T: Any> ifLet(vararg elements: T?, closure: (List<T>) -> Unit) {
if (elements.all { it != null }) {
closure(elements.filterNotNull())
}
}
使用方法
// Will print
val (first, second, third) = guardLet("Hello", 3, Thing("Hello")) { return }
println(first)
println(second)
println(third)
// Will return
val (first, second, third) = guardLet("Hello", null, Thing("Hello")) { return }
println(first)
println(second)
println(third)
// Will print
ifLet("Hello", "A", 9) {
(first, second, third) ->
println(first)
println(second)
println(third)
}
// Won't print
ifLet("Hello", 9, null) {
(first, second, third) ->
println(first)
println(second)
println(third)
}
関連
-
[解決済み] lateinit "変数が初期化されたかどうかを確認する方法は?
-
[解決済み] Kotlin 三項条件演算子
-
[解決済み] by lazy" と "lateinit" を使ったプロパティの初期化
-
[解決済み] Kotlinのvarとvalの違いは何ですか?
-
[解決済み】KotlinでJavaの静的メソッドに相当するものは何ですか?
-
[解決済み】Kotlinでコレクションを複数フィールドでソートする【重複あり
-
[解決済み】Kotlin : パブリック get プライベート set var
-
[解決済み] Kotlinで、nullableな値を扱う慣用的な方法、参照または変換する方法は何ですか?
-
[解決済み] if式でのBoolean?の使用
-
[解決済み】Kotlinの標準ライブラリで利用できるJava 8 Stream.collectに相当するものは?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Swiftの「if let」文がKotlinで同等であること
-
[解決済み] Kotlin : インタフェース Queue のコンストラクタがない。
-
[解決済み】Kotlinでコレクションを複数フィールドでソートする【重複あり
-
[解決済み】Kotlin:関数を他の関数にパラメータとして渡すには?
-
[解決済み】「不適切なブロッキングメソッドの呼び出し」を適切にする方法は?
-
[解決済み] KotlinでStringをLongに変換する方法は?
-
[解決済み] Kotlinのトライウィズリソース
-
[解決済み] Kotlinのfoldとreduceの違い、いつどちらを使うか?
-
[解決済み] '変数'が変更可能なプロパティであるため、'型'へのスマートキャストは不可能である。
-
[解決済み] Kotlinでhashmapを繰り返し処理するには?