Предполагая, что table
- это Ha sh (что мы не знаем наверняка из вашего кода), table.key(k)
возвращает значение для ключа k
, если ключ существует в вашем ha sh или nil
, если его нет. Поскольку значения вашего Ha sh кажутся не логическими значениями, сравнение с true
всегда будет ложным.
Если вы просто хотите проверить, существует ли ключ, используйте метод key?
вместо key
:
if table.key?(k)
...
end
(в этом случае можно было бы провести явное сравнение с true
, но оно является избыточным, поэтому я исключил его).
Если ваш Ha sh был создан для использования стандартного значения по умолчанию (например, nil
), вы можете сократить его до
if table[k]
...
end
Основное различие между table.key(k)
и table[k]
заключается в том, что если k
отсутствует в Ha sh, первый всегда возвращает nil, а последний возвращает значение по умолчанию для этого конкретного Ha sh, которое вы указали в конструкторе.
См. здесь подробнее.