Nov. 19, 2015
9:14 p.m.
What is the purpose of replacing expressions, used as limits in a to:do: call with by a new temporary variable? For example: OCOpalExamples>>#exampleToDoArgumentLimitIsExpression the code is exampleToDoArgumentLimitIsExpression | count sum | count := 10. sum := 0. 1 to: count - 1 do: [ :each | sum := sum + each]. ^sum the decompiled bytecode : exampleToDoArgumentLimitIsExpression | tmp1 tmp2 tmp3 | tmp1 := 10. tmp2 := 0. tmp3 := tmp1 - 1. 1 to: tmp3 do: [ :tmp4 | tmp2 := tmp2 + tmp4 ]. ^ tmp2 So, the expression (count - 1) in the to:do: loop is replaced by a new temporay (tmp3). Ok, but why ?