Monkey Maps
Monkey Forums/Monkey Programming/Monkey Maps| 
 | ||
| Function ActivateMenu:Void(menu:String) If MenuList.Get(menu) <> Null ' What I want to do MenuList.Get(menu).Active = True ' What I think I need to do Local m:Menu = MenuList.Get(menu) m.Active = True MenuList.Set(menu,m) End End I have a list of Menu items stored in a StringMap (MenuList). Am I able to manipulate these items without getting one, manipulating it and then setting it again? Thanks -Chris | 
| 
 | ||
| 
Class Menu
	Field Active:Bool
End
Global MenuList:StringMap<Menu>
Function ActivateMenu:Void(menu:String)
	If MenuList.Get(menu)
		Local m:=MenuList.Get(menu)
		m.Active = True
	End
End
Function Main()
	MenuList = New StringMap<Menu>
	
	'insert menu into map
	MenuList.Insert "hi",(New Menu)
	'activate menu
	ActivateMenu("hi")
	
	'check
	If MenuList.Get("hi").Active
		Print "active"
	Else
		Print "not active"
	Endif
End
You should be able to do it in one line, but it seems monkey's typechecker is failing. You certainly don't need to insert the object into the map again - the map only stores a pointer to the object. This should probably get moved over to the bug forum. |