Yeah, that's true, I've noticed that too. I guess it's on purpose but I have no idea. AFAIK you can't assign a new value to a parameter anywhere in the method not only when using blocks. Maybe it's not possible because there is not really a 'variable' but only a reference. So assigning a new value to the parameter would effectively override the reference. But don't trust me on this....

Cheers,
Max


On 28.11.2010, at 10:54, laurent laffont wrote:

Sorry

foo: n 
  ^[:i| n := n+i. ]

vs

foo: n 
  |s| 
  s := n. 
  ^[:i| s := s+i. ]


Laurent

On Sun, Nov 28, 2010 at 10:51 AM, Max Leske <maxleske@gmail.com> wrote:
In the first example you didn't declare 's':

foo:n
^ [ :i || s | s:= s+i ]

Or did I misunderstand the question?

Cheers,
Max


On 28.11.2010, at 10:30, laurent laffont wrote:

Hi,

I can't write

foo: n 
  ^[:i| s := s+i. ]

but 

foo: n
  |s|
  s := n.
  ^[:i| s := s+i. ]


Why ?


Cheers, 

Laurent Laffont

Pharo Smalltalk Screencasts: http://www.pharocasts.com/
Blog: http://magaloma.blogspot.com/