Проверка вхождения в Kotlin
Запись x in collection читается как
«x входит в коллекцию». Для своего класса
ту же форму дают функцией contains с
operator: она принимает искомое значение
и возвращает Boolean:
class Vocabulary(private val words: Set<String>) {
operator fun contains(item: String): Boolean {
return words.contains(item)
}
}
Слева от in стоит строка, справа - ваш
объект. Компилятор превращает проверку в вызов
contains на правом операнде:
fun main() {
val dict = Vocabulary(setOf("cat", "dog", "owl"))
println("owl" in dict)
println("fox" in dict)
}
Внутри можно хранить данные как угодно - множество,
список или карта. Снаружи остается единый стиль
проверки через in и !in.
Сделайте класс Catalog над набором
строк. Проверьте слова "red" и "blue"
в наборе "red", "green" через in
и выведите оба ответа.
Для каталога из одного слова "api" выведите,
есть ли в нем "api" и "web".