まつもと ゆきひろです

In message "[ruby-list:7475] Re: scope"
    on 98/04/15, Wakou Aoyama <wakou / fsinet.or.jp> writes:

|青山です。

|>これは scope じゃなくて call by value と call by reference 
|>の関係でしょう.
|
|はい。そうなのですが、ドキュメントからすると、現在のままではちょっと気
|持が悪いかな。と。

ドキュメントのどの部分が気持ち悪かったでしょう.
そうであれば,その部分は書き直されるべきです.

|また、逆に、Fixnum のリファレンス渡しって出来ましたっけ?

基本的に全部リファレンス渡しだと思ってて下さい.Fixnumの値は
変化しないので,リファレンスで渡したと考えても副作用は発生し
ません.即値であるのは実装上の都合です.実装上即値で表現され
るオブジェクトとそれ以外のオブジェクトとの違いは特異メソッド
が定義できるかどうかだけ(のはず)です.

Cにおける変数のアドレスを渡す事をエミュレートするために配列
を使って

  def a(v)
    v[0] += 1
  end
  v = [1]
  a(v)
  v[0] # => 1

なんてのはありえるとは思いますが,関数から複数の値を返すため
には,多分そういう使い方はしないで配列の戻り値と多重代入を使
う方がrubyらしいと思います.

  def a(x)
    return x+1, x*2
  end
  a2, a3 = a(2) # a2 = 3, a3 = 4

                                まつもと ゆきひろ /:|)