[#43970] 次の1.8.6 — Urabe Shyouhei <shyouhei@...>
卜部です。
8 messages
2007/09/01
[#43980] MacOS X で irb が走らない — "Hideo Konami" <konami@...>
小波です。
9 messages
2007/09/02
[#43987] オンラインマニュアル→[最近の更新] →「Sort alphabetically] — take_tk <ggb03124@...>
たけ(tk)です
6 messages
2007/09/03
[#43988] Re: オンラインマニュアル→[最近の更新] →「Sort alphabetically]
— SATOH Fumiyasu <fumiyas@...>
2007/09/03
At Mon, 3 Sep 2007 15:37:29 +0900,
[#43996] ある日付の最終時刻の求め方 (秒単位) — SATOH Fumiyasu <fumiyas@...>
さとうふみやす @ OSS テクノロジです。
14 messages
2007/09/05
[#43998] Re: ある日付の最終時刻の求め方 (秒単位)
— "GOTO Kentaro" <gotoken@...>
2007/09/05
07/09/05 に SATOH Fumiyasu<fumiyas@osstech.jp> さんは書きました:
[#44000] Re: ある日付の最終時刻の求め方 (秒単位)
— Urabe Shyouhei <shyouhei@...>
2007/09/05
GOTO Kentaro wrote:
[#44025] iconvの多言語対応状況に関する質問 — "S_Konno(今野 滋)" <sk@...>
今野です。お世話になっております。
5 messages
2007/09/13
[#44032] rubyインストールガイドMacOSX更新しました⇒MacPortsでのrubyインストール:Tkを有効に — "S_Konno(今野 滋)" <sk@...>
今野です。お世話になっております。
4 messages
2007/09/15
[#44037] スコープについての質問 — "142QN4969@..." <ohrsts@...>
小原です。御世話になっています。
6 messages
2007/09/16
[#44044] ApacheでVirtual hostを使わない設定でRailsを動かしたい — "paptimusx scirocco" <paptimusx@...>
ApacheでVirtual hostを使わない設定でRailsを動かしたいのですが、
4 messages
2007/09/20
[ruby-list:44043] Re: スコープについての質問
From:
"Dan Yamamoto" <dan@...>
Date:
2007-09-20 05:58:38 UTC
List:
ruby-list #44043
だんです。 私もかつて同じところで悩んだ覚えがあります。 自分がなかなか理解できなかったところを思い出して説明を書いてみました。 > today=gets.chomp 自分の経験だと、いちばん理解しがたかったのが hiduke メソッドの中にあるこ の代入です。 gets 等の処理は今回の問題と関係ないと思うので、もとソースを 次のように書き換えます。 def foo(a) a = "bye" end def bar(a) a[0] = "bye" end a = "hello" foo(a) p a #=> "hello" a = ["hello"] bar(a) p a #=> ["bye"] で、問題はこのソースの先頭から2行目の部分です。 a = "bye" この代入が実行される直前までは、 a には "hello" という文字列が代入されて います。つまり、 a はトップレベル(メソッドの外)で生成された "hello" と いう文字列オブジェクトを差しているわけです。 しかし、ここで a = "bye" という代入を実行すると、 a はここで新しく生成さ れた "bye" という文字列オブジェクトを指し示すことになり、もとの "hello" とは一切関係がなくなります。この時点でもうメソッドの中からトップレベルの "hello" を操作することはでません。トップレベルの a と foo の引数の a は たまたま同じ名前の別の変数が、同じオブジェクトを指していただけで、それ以 上の関連はありません。 それに対し bar メソッドの a は常にトップレベルの配列オブジェクトを指し 続けています。次のようなインデックスを用いた代入は、あくまで配列オブジェ クトに対する操作です。 a[0] = オブジェクト このような代入を行っても a の指している配列オブジェクトの中身が変わるだ けで、 a がもとの配列オブジェクトを指し示しているという関係は何ら変わり ません。 ここでもし、次のように a に対して別の新しい配列を関連付けてしまえば、トッ プレベルのオブジェクトに対して影響を与えることができなくなります。 a = [] a[0] = "bye"