letでチェックしますか?
次の文章を読んで、何の見当もつかずに書いた.
https://dev.to/vlazdra/a-decompiled-story-of-kotlin-let-and-run-4k83
通常コトリンを使う人はあなたをチェックするときにletを使います.
コトリンの公式ガイドラインでも次のような案内をしているので
だから、私も時々あなたをチェックするときにletを使うことがあります.以下のコードを見てletを使ってあなたをチェックするときは、もっと慎重にすべきだと思います.
問題コードは次のとおりです.
runblockはnullabeValueではないと思っていたので実行できませんでしたが、予想外にrunblockはすでに実行されていました.
run blockを実行する理由はnullableValueのlet blockのnullableValueのlet blockがnullを返すためrun blockが実行されます.
正確にするためにjavaコードを使用してコンパイルします.
このようにコードを書くことはほとんどありませんが、このような状況が発生する可能性があります.letを盲目的に使用してチェックすると、コードが意図通りに実行されない可能性があることを知っています.
しかし、私はそのような形式であなたを検査したいです!個人的には皆さんも一緒に使うことをお勧めします
https://dev.to/vlazdra/a-decompiled-story-of-kotlin-let-and-run-4k83
通常コトリンを使う人はあなたをチェックするときにletを使います.
コトリンの公式ガイドラインでも次のような案内をしているので
だから、私も時々あなたをチェックするときにletを使うことがあります.以下のコードを見てletを使ってあなたをチェックするときは、もっと慎重にすべきだと思います.
問題コードは次のとおりです.
var nullableValue: String? = ""
var nullableValue2: String? = null
nullableValue?.let {
nullableValue2?.let {
println("print1")
}
}?: run {
println("print2")
}
以上のコードの実行結果はprint 2を出力します.runblockはnullabeValueではないと思っていたので実行できませんでしたが、予想外にrunblockはすでに実行されていました.
run blockを実行する理由はnullableValueのlet blockのnullableValueのlet blockがnullを返すためrun blockが実行されます.
正確にするためにjavaコードを使用してコンパイルします.
Unit var10000;
if (this.nullableValue != null) {
if (this.nullableValue2 != null) {
String var11 = "print1";
System.out.println(var11);
var10000 = Unit.INSTANCE;
} else {
var10000 = null;
}
if (var10000 != null) {
return;
}
String var6 = "print2";
System.out.println(var6);
var10000 = Unit.INSTANCE;
}
ネストされたif文には、var 10000にnullを挿入してprtitを実行するコードが表示されます.このようにコードを書くことはほとんどありませんが、このような状況が発生する可能性があります.letを盲目的に使用してチェックすると、コードが意図通りに実行されない可能性があることを知っています.
しかし、私はそのような形式であなたを検査したいです!個人的には皆さんも一緒に使うことをお勧めします
nullableValue?.also {
//null이 리턴될 수 있는 block
}?: run {
println("print2")
}
Reference
この問題について(letでチェックしますか?), 我々は、より多くの情報をここで見つけました https://velog.io/@ams770/let을-통한-널-체크テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol