Hash.includes? дает странный результат в кристалле - PullRequest
0 голосов
/ 29 июня 2018

Я пытаюсь написать Crystal эквивалент этого кода Python:

test_hash = {}
test_hash[1] = 2
print(1 in test_hash)

Это печатает True, потому что 1 является одним из ключей dict.

Вот код Crystal, который я пробовал:

# Create new Hash
test_hash = Hash(Int32, Int32).new
# Map 1 to 2
test_hash[1] = 2
# Check if the Hash includes 1
pp! test_hash.includes?(1)

Но includes? возвращает false здесь. Зачем? Какой правильный эквивалент моего кода Python?

1 Ответ

0 голосов
/ 29 июня 2018

Используйте has_key? вместо. has_key? спрашивает, есть ли у хэша этот ключ.

Однако includes? проверяет, есть ли определенная пара ключ / значение в хеш-таблице. Если вы введете только ключ, он всегда вернет false.

Пример:

# Create new Hash
test_hash = Hash(Int32, Int32).new
# Map 1 to 2
test_hash[1] = 2
# Check if the Hash includes 1
pp! test_hash.has_key?(1)
# Check if the Hash includes 1 => 2
pp! test_hash.includes?({1, 2})


# Pointless, do not use
pp! test_hash.includes?(1)
...