views:

76

answers:

2

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?

+1  A: 

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

matt
+1  A: 

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.

bo