[#8257] Re: Smalltalk [Re: design patterns] — 助田 雅紀 <masaki.suketa@...>

助田です。

11 messages 1998/06/09
[#8259] Re: Smalltalk [Re: design patterns] — KIMURA Koichi <kkimura@...> 1998/06/10

[#8262] TkGrid do not exist? — Hiramatu Yoshifumi <hiramatu@...>

平松です。

26 messages 1998/06/10
[#8266] Re: TkGrid do not exist? — matz@... (Yukihiro Matsumoto) 1998/06/10

まつもと ゆきひろです

[#8269] Re: TkGrid do not exist? — NAGAI Hidetoshi <nagai@...> 1998/06/10

永井@知能.九工大です.

[#8271] Re: TkGrid do not exist? — NAGAI Hidetoshi <nagai@...> 1998/06/10

永井@知能.九工大です.

[#8375] new MethodIndex — keiju@... (Keiju ISHITSUKA)

けいじゅ@日本ラショナルソフトウェアです.

21 messages 1998/06/16
[#8447] new MethodIndex — TEI meiki <tei@...> 1998/06/20

こんにちは、鄭です。

[#8448] new MethodIndex — TEI meiki <tei@...> 1998/06/20

再び、鄭です。_o_

[#8418] how to use delegate — gotoken@... (GOTO Kentaro)

ごとけんです

18 messages 1998/06/18
[#8419] Re: how to use delegate — matz@... (Yukihiro Matsumoto) 1998/06/19

まつもと ゆきひろです

[#8420] Re: how to use delegate — gotoken@... (GOTO Kentaro) 1998/06/19

ごとけんです

[#8421] Re: how to use delegate — matz@... (Yukihiro Matsumoto) 1998/06/19

まつもと ゆきひろです

[#8521] hash sort — "Kazuhiro Yoshida" <s95l980@...>

もりきゅうです。

34 messages 1998/06/26
[#8523] hash sort — gotoken@... (GOTO Kentaro) 1998/06/26

ごとけんです

[#8533] Re: hash sort — WATANABE Hirofumi <watanabe@...> 1998/06/26

わたなべです.

[#8534] Re: hash sort — gotoken@... (GOTO Kentaro) 1998/06/26

ごとけんです

[#8536] Re: hash sort — Sinichiro Dezawa <dezawa@...> 1998/06/26

出沢です

[#8538] Re: hash sort — gotoken@... (GOTO Kentaro) 1998/06/26

ごとけんです

[#8539] Re: hash sort — TAKAHASHI Masayoshi <maki@...> 1998/06/26

高橋です。

[#8541] Re: hash sort — gotoken@... (GOTO Kentaro) 1998/06/26

ごとけんです

[#8546] Re: hash sort — Tadayoshi Funaba <tadf@...> 1998/06/26

ふなばです。

[ruby-list:8474] Re: scope of local variables

From: matz@... (Yukihiro Matsumoto)
Date: 1998-06-23 09:16:53 UTC
List: ruby-list #8474
まつもと ゆきひろです

In message "[ruby-list:8472] scope of local variables"
    on 98/06/23, Takao KAWAMURA <kawamura@ike.tottori-u.ac.jp> writes:

|ローカル変数に関して、よくわからないことがあるので教えてくだ
|さい。

ローカル変数はrubyでもっとも難解な部分の一つです.

|下に示すプログラムの出力結果は
|| a
|| a
|となって期待通りなのですが、1行目のx = nilを取ると
|| a
|| nil
|
|となってしまいます。

その理由は

  後者では x が最初に代入された場所がブロックの内部なので,x
  はブロック内ローカル変数だとみなされた

せいです.前者ではブロック外で宣言(代入)されていますから,x
は通常のローカル変数です.

で,後者の場合2回目のループでは条件が成立しないので代入が行
われないことになります.代入されていないローカル変数の値は
nilですから,後者の実行結果は川村さんが疑問に思われたような
挙動になるわけです.

ですから,ローカル変数のワナに引っかからないためには

  「普通の」ローカル変数は先頭で代入(宣言)しておく

という「ローカル変数のオキテ」に従うことを強くお勧めします.
ブロック内変数は

  Thread固有変数
  手続きオブジェクト固有変数

などのために必要なものです.

なお,rubyの変数の種別はそのスコープに代入(宣言)が存在するか
どうかで決まり,代入が実行されるかどうかには関係ないという大
切な原則を覚えておいて下さい.rubyは動的な言語のワリにはそう
いう静的な部分も持ってます.

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

In This Thread