Является ли словарь в основном просто хеш-таблицей?
Также бонус: в коде Ruby "Hash.new {0}" что такое "{0}" в конце для?
Ответ 1
Таблица слов, словарь и карта часто используются синонимично (в контексте структур данных). Хэш-таблица/хэш-карта - это один вид таблицы/словаря/карты.
{0} - это блок (анонимная функция), который игнорирует свой аргумент и возвращает число 0. Блок, назначенный Hash.new, вызывается для создания значения по умолчанию, когда ключ не найден в хэш-карте.
т.е. если я сделаю h = Hash.new {0}, а затем h["key that does not exist"], я вернусь 0, а не nil (который я получил бы без {0}). Обратите внимание, что в этом случае, когда значение по умолчанию является неизменным и не зависит от ключа, вам не нужно использовать форму блока Hash.new, вы можете просто сделать Hash.new(0), чтобы установить 0 в качестве значения по умолчанию.