Разница между «содержит» и «содержит ключ» в Kotlin Карта - PullRequest
0 голосов
/ 16 марта 2020
val m = mapOf<String, Int>()
m.contains("Foo")
m.containsKey("Bar")

В Kotlin есть два способа для Map проверить, есть ли на карте указанный ключ: contains и containsKey

Я знаю, что key in m является идиоматическим c способ проверить существование ключа, но мне интересно, почему у них есть два метода, выполняющих одну и ту же функцию. Есть ли между ними какие-либо различия? Или это просто устаревший код для совместимости?

Ответы [ 2 ]

2 голосов
/ 16 марта 2020

Они эквивалентны. Это реализация метода contains :

@kotlin.internal.InlineOnly
public inline operator fun <@kotlin.internal.OnlyInputTypes K, V> Map<out K, V>.contains(key: K): Boolean = containsKey(key)

Согласно документации:

Этот метод (содержит) позволяет использовать синтаксис x in map для проверка наличия объекта на карте.

1 голос
/ 16 марта 2020

Существует нет разницы между этими методами в Map

contains - это просто обобщенная c функция, используемая в разных коллекциях с разным поведением (Пример: содержит объект в коллекции, но ключ в карте)

containsKey и containsValue являются Map с указанием c функций

Но contains in Map - это просто оболочка для containsKey исходного кода :

public inline operator fun <@kotlin.internal.OnlyInputTypes K, V> Map<out K, V>.contains(key: K): Boolean = containsKey(key)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...