#include 'Moo.moo'. ////////////////////////////////////////////////////////////////# // MAIN ////////////////////////////////////////////////////////////////# // TODO: use #define to define a class or use #class to define a class. // use #extend to extend a class // using #class for both feels confusing. extend Apex { } extend SmallInteger { method getTrue: anInteger { ^anInteger + 9999. } method inc { ^self + 1. } } class TestObject(Object) { var(#class) Q, R. var(#classinst) t1, t2. } class MyObject(TestObject) { var(#class) C, B, A. method getTrue { ^true. } method getTrue: anInteger { ^ anInteger } method getFalse { ^false } method a { ^ 10 } method b { ^ 20 } method c { ^ 30 } method(#class) a: a b: b c: c { ^ a + b + c. } method(#class) getBlock { | a | a := 7777777. " ^[1 + [^a]]. 1234567 dump. " ^[self a: a b: 3 c: ([[[^6] value] value ] value)]. } method(#class) main { " | k | k := 30. k := k + 10; + 20. k dump. (self a: 1 b: 2 c: 3) dump. [self a: 1 b: 2 c: 3] value dump. [self a: 1 b: 2 c: 3] value dump. [self a: 9 b: 10 c: 11] value dump. ((k = 2) ifTrue: [11111] ifFalse: [2222])dump. self getBlock value dump. [10 + [^20]] value dump. " 'START OF MAIN' dump. [2 + 3 + 1 + [[[^6] value] value ] value] value dump. // ^(self a: (self new a) b: ([:a :b | a + b] value: 10 value: 20) c: (self new c)) dump. //self getBlock value dump. 'END OF MAIN' dump. } }