との差 !! と ? Kotlin の演算子
Kotlin では、アサーション演算子 !!
安全な呼び出し演算子 ?
null 安全で動作します。
この記事では、null セーフティの概念を紹介します。 !!
の方法についても説明します。 と ?
in Kotlin は null の安全性に役立ちます。
Null 安全の概念
Kotlin の型システムは、null 参照の問題を取り除くことを目的としています。 問題は、null の概念を持つ多くのプログラミング言語で、null 参照メンバーにアクセスすると例外が発生することです。
Kotlin では、この例外は NullPointerException
または NPE と呼ばれます。 Kotlin の型システムは、null 安全性によって null 参照の問題を克服することを目的としています。
システムは、NULL 参照を保持できる参照と保持できない参照を区別します。 たとえば、標準の String 変数は null
を保持できませんが、String?
は保持できません。 できる。
同じことを示す例を次に示します。
最初の例では、null 以外の参照を意味する標準変数を使用しています。
fun main() {
var s: String = "Hello" // Regular initialization means a non-null value
println(s)
}
出力:
標準変数で null
を使用しようとすると、エラーがスローされます。
fun main() {
var s: String = null
println(s)
}
出力:
2 番目の例では String?
を使用していますが、これは null
にすることができます。
fun main() {
var s: String? = null // we can set this to null
print(s)
}
出力:
ご覧のとおり、String?
だけです。 null
を保持できます。 したがって、標準の変数の初期化であれば、Kotlin の型システムはそれが null
値を持たないことを理解できます。
したがって、NPE を気にすることなく、そのような参照をすばやく呼び出すことができます。
しかし、null
を保持できる変数はどうでしょうか? これらの変数は NPE セーフではないため、直接アクセスすることはできません。
fun main() {
var s: String? = null // we can set this to null
print(s)
val l = s.length // This throws error as 's' can be null
}
出力:
では、そのような変数にどのようにアクセスするのでしょうか? そして答えは?
を通してです と !!
オペレーター。
Null 安全演算子 ?
コトリンで
null 参照メンバーにアクセスする 1つの方法は、?
を使用することです。 この演算子を使用すると、変数が null でない場合は値が返され、それ以外の場合は null
が返されます。
これを理解するために、以下の例を考えてみましょう。
最初の例では null 以外の値を使用し、その長さを取得します。
例 1:
fun main() {
var s: String? = "Hello"
println(s)
val l = s?.length
print(l)
}
出力:
ここで、変数を null
として初期化します。
例 2:
fun main() {
var s: String? = null
println(s)
val l = s?.length
print(l)
}
出力:
安全な演算子 ?
チェーンの作成にも役立ちます。
たとえば、会社の従業員を考えてみましょう。 彼には、マネージャーの下で働くチームリーダーがいるかもしれません。
?
を使用できます 次の方法でチェーンを作成し、David のマネージャーの名前にアクセスします。
employeename?.teamleader?.manager?.name
上記の構文は次のように読むことができます。
employeename
が null でない場合は、部門を返します。department
が null でない場合は、マネージャーを返します。manager
が null でない場合は、名前を返します。
変数のいずれかが null
の場合、構文は null
を返します。
非 Null アサーション !!
Kotlin のオペレーター
null 参照メンバーにアクセスする別のオプションは、!!
を使用することです。 オペレーター。 NPE愛好家向けです。
したがって、null 以外の参照メンバーにアクセスするアクションで、存在する場合は値を与えるか、NPE をスローする必要がある場合は、Kotlin でこの演算子を使用できます。
安全な ?
に対して行ったのと同じ 2つの例を考えてみましょう。 演算子を使用して、not-null アサーション !!
を理解する オペレーターが動作します。
例 1:
fun main() {
var s: String? = "Hello"
println(s)
val l = s!!.length
print(l)
}
出力:
例 2:
fun main() {
var s: String? = null
println(s)
val l = s!!.length
print(l)
}
出力:
Kailash Vaviya is a freelance writer who started writing in 2019 and has never stopped since then as he fell in love with it. He has a soft corner for technology and likes to read, learn, and write about it. His content is focused on providing information to help build a brand presence and gain engagement.
LinkedIn