500 calculi
Last updated at 1:17 pm UTC on 4 October 2019
Also see: 100 calculi; works fine in Squeak 5.2 and Pharo 6 (and earlier versions).
dotSize := 15.
p500 := AlignmentMorph newRow color: Color white; hResizing: #shrinkWrap; vResizing: #shrinkWrap.
"literal array of color objects"
{Color red . Color green . Color blue . Color yellow . Color gray}
do: [:color | "create block of 100"
p100 := AlignmentMorph newColumn color: Color white; hResizing: #shrinkWrap; vResizing: #shrinkWrap.
10 timesRepeat: [ |row|
row := AlignmentMorph newRow color: Color white;
hResizing: #shrinkWrap; vResizing: #shrinkWrap.
10 timesRepeat: [row addMorph: (CircleMorph new extent: dotSize@dotSize; color: color)].
p100 addMorph: row].
p500 addMorphBack: p100
].
p500 openInHand

Using a block
The code above rewritten to use
createNewRowBlock := [AlignmentMorph newRow color: Color white; hResizing: #shrinkWrap; vResizing: #shrinkWrap].
Then a new row is created by sending the #value message
createNewRowBlock value
This will simplify code if there is a lot of code in the block.
dotSize := 17.
createNewRowBlock := [AlignmentMorph newRow color: Color white; hResizing: #shrinkWrap; vResizing: #shrinkWrap].
createNewColumnBlock := [AlignmentMorph newColumn color: Color white; hResizing: #shrinkWrap; vResizing: #shrinkWrap].
p500 := createNewRowBlock value.
"literal array of color objects"
{Color red . Color green . Color blue . Color yellow . Color gray}
do: [:color | "create block of 100"
p100 := createNewColumnBlock value.
10 timesRepeat: [ |row|
row := createNewRowBlock value.
10 timesRepeat: [row addMorph: (CircleMorph new extent: dotSize@dotSize; color: color; borderColor: Color white)].
p100 addMorph: row
].
p500 addMorphBack: p100
].
p500 openInHand

Tag: Montessori