Maps. expecting class member declaration.

Monkey Forums/Monkey Programming/Maps. expecting class member declaration.

Loofadawg(Posted 2013) [#1]
While following along in Jim's most excellent video tutorials:

http://www.youtube.com/watch?v=VHr90rUZvwg

I get this error when trying to compile.

Syntax error - expecting class member declaration.


Since the video is a year old or more, I guess something has changed in Monkey where what he shows is no longer valid.


Class PersonMap<T> Extends Map<Int, T>
	Method Compare(key1:Int, key2:Int)
		Return key1 - key2
	Return
End


Function Main:Int()

	Local people:PersonMap<String>= New PersonMap<String>()
	
	people.Add(24601,"Fred")
	people.Add(12345,"Sally")
	
	people.Set(43124,"Gary")
	people.Set(12345,"Sallyann")
	
	people.Get(12345)
	
	For Local key:Int = Eachin people.Keys()
		Print("ID: "+keys+" Name: "+people.Get(key))
	End

	Return 0
End


That being so, how would you "fix" the code above ?


Loofadawg(Posted 2013) [#2]
I think I see part of the problem but do correct me if I am wrong..
the keyword "Map" in no longer valid in Monkey.


dawlane(Posted 2013) [#3]
First a Method should End with End or End Method not a 'Return' and there is a syntax error within the print statement +keys+ should read +key+

And if you ran the code once fixed in Strict mode then it wouldn't work unless you defined the return type in Compare e.g Compare:Int

Edit: You should aways use strict mode as this can trap any coding errors.


Loofadawg(Posted 2013) [#4]
You are so right dawlane. What a stupid loofa I must look like. LOL!
I have been staring at code too long today.

Class PersonMap<T> Extends Map<Int, T>
	Method Compare(key1:Int, key2:Int)
		Return key1 - key2
	End
End


Function Main:Int()

	Local people:PersonMap<String>= New PersonMap<String>()
	
	people.Add(24601,"Fred")
	people.Add(12345,"Sally")
	
	people.Set(43124,"Gary")
	people.Set(12345,"Sallyann")
	
	people.Get(12345)
	
	For Local key:Int = Eachin people.Keys()
		Print("ID: "+key+" Name: "+people.Get(key))
	End

	Return 0
End