Бу:Явное указание типа хеша
-
23-09-2019 - |
Вопрос
Я новичок в Boo и пытаюсь понять, как объявить тип хеша.Когда я делаю:
myHash = {}
myHash[key] = value
(later)
myHash[key].method()
компилятор жалуется, что «метод не является членом объекта».Я так понимаю, он не знает, какого типа значение в хеше.
Есть ли способ объявить компилятору, какой тип ключей и значений хеша, чтобы он не жаловался?
Решение
Встроенная хеш-таблица в boo очень похожа на стандартную хэш-таблицу .NET — ключ и значение каждой записи имеют тип «объект».
Лучше всего использовать общий словарь:
import System.Collections.Generic
myHash = Dictionary[of string, Foo]()
В этом примере будет создан словарь, в котором типом ключа является строка, а значение будет иметь тип Foo.
Другие советы
Другой вариант, который оставляет ваш код без изменений, — это включить утиный ввод с помощью -ducky
выключатель.Лично я использую исключительно коллекции от System.Collections.Generic
вместо встроенных типов списков и словарей, так как производительность намного выше.