[#38080] ポートが閉じているときの例外など — Mitsuru Ogino <ogino@...>

荻野と申します。いつも質問や要望ばかりですみません。

36 messages 2003/08/11
[#38086] Re: ポートが閉じているときの例外など — nobu.nakada@... 2003/08/12

なかだです。

[#38088] Re: ポートが閉じているときの例外など — IWAOKA Masahiro <iwaoka@...> 2003/08/12

いわおかです。

[#38091] Re: ポートが閉じているときの例外など — Mitsuru Ogino <ogino@...> 2003/08/12

荻野です。

[#38092] Re: ポートが閉じているときの例外など — nobu.nakada@... 2003/08/12

なかだです。

[#38093] Re: ポートが閉じているときの例外など — IWAOKA Masahiro <iwaoka@...> 2003/08/12

いわおかです。

[#38095] Re: ポートが閉じているときの例外など — Takahiro Kambe <taca@...> 2003/08/12

In message <20030812150516.GV37221@barber.fe.rn.tuat.ac.jp>

[#38102] Re: ポートが閉じているときの例外など — Tetsuo NAKAGAWA <tet@...> 2003/08/14

中川と申します。

[#38121] Re: ポートが閉じているときの例外など — Takahiro Kambe <taca@...> 2003/08/15

In message <20030814.140757.707824131.tetsuo@sapphire.siz.nes.nec.co.jp>

[#38123] Re: ポートが閉じているときの例外など — nobu.nakada@... 2003/08/16

なかだです。

[#38130] Re: ポートが閉じているときの例外など — Takahiro Kambe <taca@...> 2003/08/16

In message <200308160517.h7G5HcPL012839@sharui.nakada.kanuma.tochigi.jp>

[#38137] Re: ポートが閉じているときの例外など — nobu.nakada@... 2003/08/18

なかだです。

[#38139] Re: ポートが閉じているときの例外など — Takahiro Kambe <taca@...> 2003/08/18

In message <200308180959.h7I9xnb7001977@sharui.nakada.kanuma.tochigi.jp>

[#38122] ruby-tcpwrap and mkmf.rb — Takahiro Kambe <taca@...>

こんにちは。

16 messages 2003/08/16
[#38125] Re: ruby-tcpwrap and mkmf.rb — "Akinori MUSHA" <knu@...> 2003/08/16

At Sat, 16 Aug 2003 12:51:55 +0900,

[#38183] String << の動作につきまして — kuto@...

うと と申します。

44 messages 2003/08/22
[#38187] Re: String << の動作につきまして — Take_tk <ggb03124@...> 2003/08/22

たけ(tk)です。

[#38189] Re: String << の動作につきまして — Tadayoshi Funaba <tadf@...5.so-net.ne.jp> 2003/08/23

ふなばです。

[#38190] Re: String << の動作につきまして — Take_tk <ggb03124@...> 2003/08/23

たけ(tk)です。

[#38191] Re: String << の動作につきまして — Tadayoshi Funaba <tadf@...5.so-net.ne.jp> 2003/08/23

ふなばです。

[#38194] Re: String << の動作につきまして — Take_tk <ggb03124@...> 2003/08/23

たけ(tk)です。

[#38196] Re: String << の動作につきまして — Tadayoshi Funaba <tadf@...5.so-net.ne.jp> 2003/08/23

ふなばです。

[#38203] Re: String << の動作につきまして — 西 啓一朗 <receiver@...> 2003/08/23

ども、西啓一朗@Ktouth Brand. です。

[#38208] Re: String << の動作につきまして — Tadayoshi Funaba <tadf@...5.so-net.ne.jp> 2003/08/23

ふなばです。

[#38211] Re: String << の動作につきまして — 西 啓一朗 <receiver@...> 2003/08/24

ども、西啓一朗@Ktouth Brand. です。

[#38195] 理解の進め方(Re: String << の動作につきまして) — Tadashi Oh-Ya <toy@...>

おおやです。

36 messages 2003/08/23
[#38206] 理解の進め方:シュールな世界 — Take_tk <ggb03124@...> 2003/08/23

たけ(tk)です。

[#38233] シュールな名前 — Take_tk <ggb03124@...> 2003/08/25

たけ(tk)です

[#38198] Tmailで送るメールに日付がつけられなくなりました — 川田誠司 <kawada.seiji@...>

はじめまして

11 messages 2003/08/23

[#38256] かみ砕いた説明をすべき範囲 — 西 啓一朗 <receiver@...>

ども。西啓一朗@Ktouth Brand. です。

41 messages 2003/08/26
[#38258] Re: かみ砕いた説明をすべき範囲 — nobu.nakada@... 2003/08/26

なかだです。

[#38261] Re: かみ砕いた説明をすべき範囲 — Take_tk <ggb03124@...> 2003/08/26

たけ(tk)です

[#38262] Re: かみ砕いた説明をすべき範囲 — nobu.nakada@... 2003/08/26

なかだです。

[#38264] Re: かみ砕いた説明をすべき範囲 — Take_tk <ggb03124@...> 2003/08/26

たけ(tk)です

[#38265] Re: かみ砕いた説明をすべき範囲 — IWAOKA Masahiro <iwaoka@...> 2003/08/26

いわおかです。

[#38267] Re: かみ砕いた説明をすべき範囲 — Take_tk <ggb03124@...> 2003/08/26

たけ(tk)です

[#38273] Re: かみ砕いた説明をすべき範囲 — matz@... (Yukihiro Matsumoto) 2003/08/26

まつもと ゆきひろです

[ruby-list:38250] 容器説を考える(Re: Re: String <<の動作につきまして)

From: Sako <sakoh@...2.so-net.ne.jp>
Date: 2003-08-25 17:00:05 UTC
List: ruby-list #38250
酒匂です。

ということでやや旗色の悪い(?)、変数=容器説ですが、
試しに容器説というメタファを使うとどうなるかも考えてみました。
既に松本さんからもコメントが出ていますが、
枯木も山の賑わいということで(笑)。

書いてみると何の変哲もない説明でした。
とても猫の物語のような Lovely なものにはなっていません :-)

----

オブジェクトが生み出されて、床にぶちまけられていたとしたら、
どこに何があるかわからなくなってしまいますよね、

そこで Ruby では(実は Ruby に限らないのですが)、生み出された
オブジェクトはみなユニークな番号のついた棚の中に
置かれることになっています。

あるオブジェクトは「101番の棚にある奴」とか
「20番の棚に入っているもの」という形で指定できることに
なります。

ところが、このやり方でもやはり不便が生じます。
とても単純なプログラムなら「1番の棚にはこれを入れて」
「2番の棚にはこれを入れておこう」と決めて置くことも
できるかもしれませんが、何千個もオブジェクトを生み出す
ようなプログラムを書く場合、どんな順番でどのようなオブジェクト
を生み出して一々どの棚に置くかをプログラマが考えることは
苦痛ですし、実際不可能です。

そこで、自分の関心のあるオブジェクトに素早く
アクセスできるようにするために、変数や定数という
仕掛けが使われることになります。

Ruby の変数と定数は、そこを見るとオブジェクトのありかがわかる
容器だと考えることができます。この容器にはそれぞれ適切な
名前が付いています。

普通の容器だと、その中にはものが直接しまわれているのですが、
Ruby の場合はちょっと違って、ある名前の付いた容器の中には、
どの棚のオブジェクトを見に行けばよいかだけの「情報」がしまわれています。

まず説明するのは「変数」容器の例です。たとえば

myCat = Cat.new

という Ruby の式があったとします。
こうすると myCat という名前のついた容器の中には、
Cat.new で生み出されたオブジェクトが何番の
棚に置かれたかの情報が入れられることになります。

もちろんこのプログラムを書く人は Cat.new で作られるオブジェクトが
1 番の棚に置かれるのか、あるいは 1024番の
棚に置かれるのかを気にする必要はありません。

さてここで説明に使った変数という「容器」には、
普通の容器とはまた違った性質があります。
それは中の情報を単に取り出しても、元の情報は残ったまま
という性質です。

例えば、次のような式を考えましょう。

yourCat = myCat

普通の容器だと myCat の中身が、yourCat の中に移されるので、
myCat は空になってしまうのですが、Ruby 他の多くのオブジェクト
指向言語では、myCat の中の情報が単に yourCat の中に複製されて
入ることになります。

ここで注意しなければならないのは、複製されたのは「何番の棚に
オブジェクトが置かれているかの情報」であって、棚にある
オブジェクトそのものは何の影響も受けていないということです。

たとえば最初に Cat.new で生み出されたオブジェクトが 34番の
棚に置かれたとすると容器 myCat には「34番の棚」という情報が
入っています。同様に容器 yourCat にも「34番の棚」という情報が
複製されて入ります。

ということで、この時点では
34番の棚に Cat クラスから作られたオブジェクトがあり、
myCat, yourCat という容器の中にはそれぞれ「34番の棚」
という情報が入ってることになります。

このとき34番の棚に入っているオブジェクトに addAge といった
メソッドを適用して「年齢を1つ加えた」とします。オブジェクトは
一つしかないのですから、当然 myCat からみても、yourCat から
みても、オブジェクトの「年齢は一つ上がっている」ことになります。

myCat.addAge
yourCat.addAge

とすると、当然オブジェクトの年齢は2つ上がります。

さて、Ruby は容器の名前のつけ方で、その性質を
区別しています。ここでは「名前の先頭が大文字」の
容器を考えてみます。

MyCat = Cat.new

この MyCat という名前の容器と、先の myCat という名前の
容器の違いは何でしょうか。一番大きな違いは、myCat という
名前の容器は、違う棚の情報を次々自由に入れることができる
のですが、MyCat という容器は原則として一度入れた情報
を変えることが出来ないということです。

つまり myCat という容器には、ある時点では「34番の棚」
という情報が入っていたり、またある時点では「66番の棚」
という情報が入っていたりします。

これに対して MyCat という容器には一度「73番の棚」
という情報が入ると、原則として同じ情報が入り続ける
ことが期待されています(とはいえ Ruby の場合には
警告が出されながらも、新しい情報を入れることができるの
ですが)。

こうしたことから myCat のような容器を「変数」とよび
MyCat のような名前の先頭が大文字の容器を「定数」と呼びます。

くどいようですが、もう一度念を押しておくならば、
容器に入っている情報は、定数変数を問わず
いずれも「棚の番号」です。実際に棚の上に置かれている
オブジェクト自身の内容が変わることに関しては
定数から辿れるのか、変数から辿れるのかは
一切関係していません。

なので

myCat = Cat.new
MyCat = myCat
myCat.addAge

とすれば、先の例と同じで myCat と MyCat から辿れる
オブジェクトは同じものであり、どちらからみても
一つ年齢が上がっていることになります。 

またお分かりのように、棚の上のオブジェクトにしてみれば
自分の情報が「どの名前の容器の中に入れられているか」は
わかりません。また知る必要もないのです。
-----------------------------------------------------------------------
<Sako Hiroshi>  -- to design is human, design is our business 
   http://www02.so-net.ne.jp/~sakoh/  mailto:sakoh@ba2.so-net.ne.jp
   Designers' Den Corporation : and for now, No Peace, No Future.      
-----------------------------------------------------------------------



In This Thread