Kotlin: лучший способ express "` String? `Содержит` String` " - PullRequest
1 голос
/ 05 мая 2020

Этот может быть просто дубликатом Использование логического? в выражении if , но я не знаю достаточно Kotlin, чтобы знать, является ли это ...

Я хочу проверить, содержит ли body : String? expected : String в качестве подстроки. (Если body равно null, то он не содержит подстроки.) Я понял, что могу написать свое условие следующим образом:

    if (body?.contains(expected) == true) {
        succeed()
    }

или так:

    if (body?.contains(expected) != true) {
        fail()
    }

(где body?.contains(expected) - выражение типа Boolean?), но действительно ли это лучший или самый идиоматический c способ написания такого состояние? Есть ли какие-либо альтернативы (возможно, с использованием других функций-членов String), которые проще для глаз?

1 Ответ

5 голосов
/ 05 мая 2020

То, что вы опубликовали, - это то, что инспектор кода по умолчанию рекомендует вам изменить, если вы наберете что-то вроде

if (body?.contains(expected) ?: false)

, чтобы ваша версия могла считаться идиоматической c.

Если известно, что expected не будет пустым, вы можете подумать, что его проще читать так:

if (body.orEmpty().contains(expected))

или

if (expected in body.orEmpty())
...