Boo: Explicitly specifying the type of a hash
-
23-09-2019 - |
Question
I am new to Boo, and trying to figure out how to declare the type of a hash. When I do:
myHash = {}
myHash[key] = value
(later)
myHash[key].method()
the compiler complains that "method is not a member of object". I gather that it doesn't know what type the value in the hash is.
Is there any way I can declare to the compiler what type the keys and values of the hash are so that it won't complain?
Solution
The builtin hashtable in boo is very similar to the standard .NET Hashtable - the key and value of each entry are both of type "object".
Your best bet is to use a generic Dictionary:
import System.Collections.Generic
myHash = Dictionary[of string, Foo]()
This example will create a dictionary where the type of the key is a string, and the value will be of type Foo
OTHER TIPS
Another option that leaves your code unchanged is to enable duck typing with the -ducky
switch. I personally exclusively use the collections from System.Collections.Generic
instead of the built-in list and dictionary types, as performance is much better.