#include 'Stix.st'. ################################################################# ## 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) { dcl(#class) Q R. dcl(#classinst) t1 t2. } class MyObject(TestObject) { dcl(#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. } }