"Sam Sungshik Kong" <ssk / chol.nospam.net> schrieb im Newsbeitrag
news:%2pvc.63994$0L.31478 / newssvr29.news.prodigy.com...
> Hello!
>
> In ruby FAQ, I find the following code.
>
>   def addOne(n)
>     n += 1
>   end

This code is misleading.  It should read

def addOne(n)
  n + 1
end

There is no point in the assignment to n since n is nowhere else used in the
method.

>   a = 1
>   addOne(a)      # -> 2
>   a              # -> 1
>
>
> According to the manual, Fixnum is a value type.
> Then the argument 'a' must be changed in-place.

No.  It would have to be changed in place *if* Ruby would support call by
reference - which it doesn't.

> Am I misunderstanding?

It seems so.  n is not an alias for a but points to the same instance.  n +
1 returns a new instance that is assigned to n by having "n += 1".  The
instance pointed to by a is not changed.  (Numbers are immutable).

Kind regards

    robert