Skip to content

ProcessSharedLocals

Nathaniel Sabanski edited this page Jan 20, 2016 · 5 revisions

Added by dholton dholton

The previous example from the ProcessMethodBodiesWithDuckTyping step had a closure that accessed (and modified) an outside variable (clickcount).

Here a class is created to share that object.

import System.Windows.Forms from System.Windows.Forms

[Boo.Lang.ModuleAttribute]
public final transient class TempModule(System.Object):

	private static def Main(argv as (System.String)) as System.Void:
		___locals = TempModule.___locals3()
		f = System.Windows.Forms.Form()
		___locals.___clickcount_0 = 0
		b = __eval__(
                   (___temp1 = System.Windows.Forms.Button()), 
                    ___temp1.set_Text('Hello'), 
                    ___temp1.set_Dock(System.Windows.Forms.DockStyle.Fill), 
                    ___temp1)
		b.add_Click({ Boo.Lang.Builtins.print(
                    "you clicked me ${(
                      ___locals.___clickcount_0 = (
                      ___locals.___clickcount_0 + 1)
                     )} times") })
		f.get_Controls().Add(b)
		f.ShowDialog()

	private def constructor():
		super()

	internal static def ___closure2() as System.Void:
		Boo.Lang.Builtins.print(
                   "you clicked me ${(
                      ___locals.___clickcount_0 = (
                       ___locals.___clickcount_0 + 1)
                    )} times")

	class ___locals3(System.Object):

		internal ___clickcount_0 as System.Int32

		public def constructor():
			super()
Clone this wiki locally