Да, будет.
Или, по крайней мере, будет, как только вы исправите синтаксическую ошибку ... (Функция определена так, чтобы возвращать строку, но ничего не возвращает. Чтобы это исправить,либо добавьте return
перед when
- либо сделайте его телом выражения, заменив первое {
на =
и удалив последнее }
. Последний случай проще для коротких функций, особенно когда вы можететакже удалите тип возврата, но он менее подходит для более длинных.)
Самый простой способ проверить это, конечно, запустить его самостоятельно!Но да, после исправления синтаксиса, он действительно вернет пустую строку, если вызывается с помощью null
.
. То, что происходит, это то, что оператор ?.
(безопасный вызов) будет обходить вызов toUpperCase()
если LHS null
, и передать null
непосредственно when
.И поскольку null
не равен "A"
или "B"
, он падает до ветви else
, которая дает пустую строку.
Как указывает другой ответ, вы, конечно, можетепроверьте null
явно.Но Kotlin предоставляет вам несколько инструментов для более краткой обработки нулей (например, здесь используется оператор безопасного вызова), так что вам часто не нужно.