[#2906] DLL for GNU Win32 — WATANABE Hirofumi <watanabe@...>
わたなべです.
5 messages
1997/05/06
[#2910] thread and fork — jkuro@... (Jun Kuroda)
黒田です。
15 messages
1997/05/07
[#2911] Re: thread and fork
— matz@... (Yukihiro Matsumoto)
1997/05/07
まつもと ゆきひろです.
[#2912] Re: thread and fork
— jkuro@... (Jun Kuroda)
1997/05/07
黒田です。
[#2913] Re: thread and fork
— matz@... (Yukihiro Matsumoto)
1997/05/07
まつもと ゆきひろです.
[#2914] Re: thread and fork
— jkuro@... (Jun Kuroda)
1997/05/07
黒田です。
[#3023] Re: thread and fork
— jkuro@... (Jun Kuroda)
1997/05/27
黒田です。
[#3025] Re: thread and fork
— matz@... (Yukihiro Matsumoto)
1997/05/28
まつもと ゆきひろです
[#2922] chap 1 draft #2 — matz@... (Yukihiro Matsumoto)
まつもと ゆきひろです
7 messages
1997/05/09
[#2936] How to create ext — Eiji-usagi-MATSUmoto <ematsu@...>
うさぎです。
8 messages
1997/05/13
[#2938] Re: How to create ext
— matz@... (Yukihiro Matsumoto)
1997/05/13
まつもと ゆきひろです.
[#2952] [BUG] Dir.glob — sinara@...
原です。おひさしぶりです。
6 messages
1997/05/16
[#2960] dl-malloc — jkuro@... (Jun Kuroda)
黒田です。
9 messages
1997/05/19
[#2978] Re: [s-lang:00052] Re: Python/Ruby Jed — MAEDA Shugo <shugo@...>
前田です。
6 messages
1997/05/20
[#3005] Matrix — MAEDA Shugo <shugo@...>
前田です。
13 messages
1997/05/22
[#3006] Re: Matrix
— matz@... (Yukihiro Matsumoto)
1997/05/22
まつもと ゆきひろです
[#3026] ruby 1.0-970528 released — matz@... (Yukihiro Matsumoto)
まつもと ゆきひろです
9 messages
1997/05/28
[#3027] Re: ruby 1.0-970528 released
— MAEDA Shugo <shugo@...>
1997/05/28
前田です。
[#3031] Re: ruby 1.0-970528 released
— matz@... (Yukihiro Matsumoto)
1997/05/29
まつもと ゆきひろです
[#3028] Can I use non IO object for $stdout? — MAEDA Shugo <shugo@...>
前田です。
7 messages
1997/05/28
[#3030] Re: Can I use non IO object for $stdout?
— matz@... (Yukihiro Matsumoto)
1997/05/29
まつもと ゆきひろです
[#3034] Re: Can I use non IO object for $stdout?
— MAEDA Shugo <le4441ms@...>
1997/05/29
前田です。
[#3050] flock (BSD/OS 2.0 i386) — gotoken@... (GOTO Kentaro)
後藤です。
6 messages
1997/05/30
[#3055] ruby 1.0-970530 released — matz@... (Yukihiro Matsumoto)
まつもと ゆきひろです
5 messages
1997/05/30
[ruby-list:3033] Re: thread and fork
From:
matz@... (Yukihiro Matsumoto)
Date:
1997-05-29 03:20:08 UTC
List:
ruby-list #3033
まつもと ゆきひろです
In message "[ruby-list:3032] Re: thread and fork"
on 97/05/29, Jun Kuroda <jkuro@dwe.co.jp> writes:
|黒田です。
| >ですね.ここで「うっかり」イテレータブロックの外側でlogって
| >名前の変数を使っちゃうと痛い目に遭いますが.
|
|外側というのは
|- --
|def session(log)
| log.set構造体
| ...
|end
|
|thread.start{
| log = Log.new
| session(log)
|}
|- --
|
|こういうのもだめなんでしょうか。
いいえ,これはOKです.外側っていうのはスコープのネストの外側
という意味です.ちょっとややこしいので,説明しておきます.
rubyのスコープは基本的には外側がみえません.たとえばdefの内
側から外のローカル変数はみえません.
しかし,例外があります.それはイテレータブロックです.
イテレータブロックは新しいスコープを導入しますが,外側のロー
カル変数もみえるんです.
aaa = 25 # 外側のスコープ(aaaがみえる)
thread.start { # ネストしたスコープ
log = Log.new # aaa,logがみえる
session(log)
} # ネストしたスコープの終り
# logはみえなくなる
これによってthread毎に固有の値を持つローカル変数を使うことが
出来ます.ところが間違ってlogをイテレータブロックの外側で初
期化しちゃうと
log = 25 # logを初期化しちゃった
...
thread.start { # ネストしたスコープ
log = Log.new # 変数logは共有される
session(log) # 外側でlogを変えると痛い目に
}
...
となってしまいます.この辺がちょっとややこしいですね.
まつもと ゆきひろ /:|)