Merge pull request #506 from andrewcsmith/patch-2
[supercollider.git] / HelpSource / Classes / LazyEnvir.schelp
blob009498ab7dc45ab56a6d3f3103ed636fc8cce925
1 class:: LazyEnvir
2 summary:: lazy environment
3 categories:: Libraries>JITLib>Environments
4 related:: Classes/Environment, Classes/EnvironmentRedirect, Classes/ProxySpace, Overviews/JITLib
6 description::
7 Environment with deferred evaluation and default values.
9 Consequently, calculations can be done with nonexisting objects which can then be assigned later.
10 Per default, a LazyEnvir returns instances of link::Classes/Maybe::. See also link::Classes/Fdef::.
12 InstanceMethods::
14 method::put
15 sets the value of the reference at key.
17 method::at
18 returns a reference to the object at key.
20 Examples::
22 code::
23 l = LazyEnvir.push;
25 // default objects are created on access
26 ~a;
27 ~a.value; // defaults to 1
29 // operations on placeholders
31 ~c = ~a + ~b;
33 ~c.value;
37 // variables can be assigned later
39 ~a = 800;
40 ~b = { 1.0.rand };
42 ~c.value;
46 // variables can be exchanged later
48 ~b = { 1000.rand };
49 ~c.value;
53 // making pattern space using LazyEnvir
55 a = LazyEnvir.new;
56 a.proxyClass=\PatternProxy;
58 a.push;
60 ~x = Pseq([1, 2, 30], 1);
61 ~y = Pseq([~x], inf);
63 z = ~y.asStream;
65 z.next;
66 z.next;
67 z.next;
68 ~x = Pseq([100, 2, 300], 1);
69 z.next;
70 z.next;
71 z.next;
73 a.pop;