Kotlinのlet関数に関して学びます。
安全呼び出しの項目では、オブジェクトの関数をnullであることを考慮した呼び出し方を学びましたが、
ある関数にnullableであるオブジェクトを渡したい場合は、標準ライブラリであるletを使うことよって解決できます。
例を見ましょう。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
fun main(args: Array<String>) { // nullable object var str: String? = null // 1.nullableであることを考慮せずに実施する関数に対してlet関数を使用 val upperStr = str?.let { toUpperCase(it) } // print null println(upperStr) } // 2.引数のStringオブジェクトに対してtoUpperCaseを実行する fun toUpperCase(string: String): String { return string.toUpperCase() } |
1.let関数を使用する
関数toUpperCaseは引数がnullであることを考慮していないため、
nullableである変数strを引数として渡すと、コンパイルエラーになってしまいます。
そのために使用するのが、let関数です。
実施される内部がnullで実行できない場合実行結果としてnullを返します。
ですので、このケースでは、println(upperStr)でnullと表示されます。
1 2 |
@kotlin.internal.InlineOnly public inline fun <T, R> T.let(block: (T) -> R): R = block(this) |