[#19082] TermIO for ioctl — Shugo Maeda <shugo@...>

前田です。

19 messages 1999/12/01

[#19086] iconv wrapper — nobu.nakada@...

なかだです。

22 messages 1999/12/01
[#19103] Re: iconv wrapper — Hiroshi IGARASHI <igarashi@...> 1999/12/02

いがらしです。

[#19104] Re: iconv wrapper — nobu.nakada@... 1999/12/02

なかだです。

[#19187] Re: iconv wrapper — Hiroshi IGARASHI <igarashi@...> 1999/12/06

いがらしです。

[#19139] 簡易プリプロセッサ epp 0.1 — SASAKI Shunsuke <ele@...17.odn.ne.jp>

どうも。佐々木です。

12 messages 1999/12/03

[#19193] Japanese Regular Expression — Hiroyuki KUROSAKI <noir@...>

はじめまして。黒崎と申します。最近 Ruby を使いはじめました。よろしく

18 messages 1999/12/06
[#19195] Japanese Regular Expression — gotoken@... (GOTO Kentaro) 1999/12/06

In message "[ruby-list:19193] Japanese Regular Expression"

[#19200] Re: Japanese Regular Expression — Hiroyuki KUROSAKI <noir@...> 1999/12/06

gotoken さん、お返事ありがとうございます。

[#19206] Re: Japanese Regular Expression — matz@... (Yukihiro Matsumoto) 1999/12/06

まつもと ゆきひろです

[#19246] 破壊的イテレータ? — Hiroshi Saito <HiroshiSaito@...>

どうも、お世話になっております。サイトウです。

71 messages 1999/12/07
[#19257] Re: 破壊的イテレータ? — Wakou Aoyama <wakou@...> 1999/12/07

青山です。

[#19259] Re: 破壊的イテレータ? — Wakou Aoyama <wakou@...> 1999/12/07

青山です。

[#19278] オブジェクトの代入について — Hiroshi Saito <HiroshiSaito@...> 1999/12/08

サイトウです。

[#19296] Re: オブジェクトの代入について — gotoken@... (GOTO Kentaro) 1999/12/08

In message "[ruby-list:19278] オブジェクトの代入について"

[#19316] Re: オブジェクトの代入について — matz@... (Yukihiro Matsumoto) 1999/12/09

まつもと ゆきひろです

[#19325] Re: オブジェクトの代入について — gotoken@... (GOTO Kentaro) 1999/12/09

ごとけんです

[#19328] Re: オブジェクトの代入について — matz@... (Yukihiro Matsumoto) 1999/12/09

まつもと ゆきひろです

[#19331] Re: オブジェクトの代入について — gotoken@... (GOTO Kentaro) 1999/12/09

ごとけんです

[#19337] Re: オブジェクトの代入について — matz@... (Yukihiro Matsumoto) 1999/12/09

まつもと ゆきひろです

[#19343] Re: オブジェクトの代入について — ogino@... (Ogino Junya) 1999/12/09

荻野ともうします。

[#19351] Re: オブジェクトの代入について — Motomichi Matsuzaki <mzaki@...> 1999/12/09

[#19358] Re: オブジェクトの代入について — gotoken@... (GOTO Kentaro) 1999/12/09

ごとけんです

[#19366] Re: オブジェクトの代入について — Motomichi Matsuzaki <mzaki@...> 1999/12/10

[#19249] ruby story ? — "Kikutani, Makoto" <kikutani@...>

Maya Stodteつー人からRuby storyについて話を聞きたいのだが、

29 messages 1999/12/07

[#19441] 自動翻訳プロジェクト — matz@... (Yukihiro Matsumoto)

まつもと ゆきひろです

49 messages 1999/12/13
[#19470] Re: 自動翻訳プロジェクト — Wakou Aoyama <wakou@...> 1999/12/13

青山です。

[#19471] Re: 自動翻訳プロジェクト — Wakou Aoyama <wakou@...> 1999/12/13

青山です。

[#19474] Re: 自動翻訳プロジェクト — matz@... (Yukihiro Matsumoto) 1999/12/14

まつもと ゆきひろです

[#19481] Re: 自動翻訳プロジェクト — nakajima kengo<ringo@...> 1999/12/14

[#19482] Re: 自動翻訳プロジェクト — matz@... (Yukihiro Matsumoto) 1999/12/14

まつもと ゆきひろです

[#19483] Re: 自動翻訳プロジェクト — nakajima kengo<ringo@...> 1999/12/14

[#23719] Re: 自動翻訳プロジェクト — TAKAHASHI Masayoshi <maki@...> 2000/07/06

高橋征義です。

[#23722] Re: 自動翻訳プロジェクト — matz@... (Yukihiro Matsumoto) 2000/07/06

まつもと ゆきひろです

[#23723] Re: 自動翻訳プロジェクト — TAKAHASHI Masayoshi <maki@...> 2000/07/06

高橋征義です。

[#19442] ClipBoard I/O 対応 — Itou-T15@...

クリップボードI/O はたいていファイルI/Oの様に抽象化されていないが

47 messages 1999/12/13
[#19465] Re: ClipBoard I/O 対応 — 中村暁史 Nakamura Akifumi <BXQ04723@...> 1999/12/13

[#19467] Re: ClipBoard I/O 対応 — matz@... (Yukihiro Matsumoto) 1999/12/13

まつもと ゆきひろです

[#19508] Re: ClipBoard I/O 対応 — 中村暁史 Nakamura Akifumi <BXQ04723@...> 1999/12/14

[#19523] Re: ClipBoard I/O 対応 — "NAKAMURA, Hiroshi" <nakahiro@...> 1999/12/15

なひです.

[#19551] Re: ClipBoard I/O 対応 — 中村暁史 Nakamura Akifumi <BXQ04723@...> 1999/12/15

[#19556] Re: ClipBoard I/O 対応 — matz@... (Yukihiro Matsumoto) 1999/12/15

まつもと ゆきひろです

[#19565] Re: ClipBoard I/O 対応 — 中村暁史 Nakamura Akifumi <BXQ04723@...> 1999/12/15

[#19456] mod_ruby & eRuby — Wakou Aoyama <wakou@...>

青山です。

20 messages 1999/12/13
[#19490] Re: mod_ruby & eRuby — TAKAHASHI Masayoshi <maki@...> 1999/12/14

mod_ruby初心者の高橋征義です。

[#19484] Ruby Application Archive — matz@... (Yukihiro Matsumoto)

まつもと ゆきひろです

25 messages 1999/12/14

[#19578] ruby-list の過去ログの作り方 — Momotaro Nishiumi <momotaro@...>

はじめまして。ももたろといいますm(_ _)m

48 messages 1999/12/16
[#19581] Re: ruby-list の過去ログの作り方 — Shin-ichiro Hara <sinara@...> 1999/12/16

原です。

[#19583] Re: ruby-list の過去ログの作り方 — Momotaro Nishiumi <momotaro@...> 1999/12/16

こん○○は〜。ももたろです。

[#19622] Re: ruby-list の過去ログの作り方 — Shin-ichiro Hara <sinara@...> 1999/12/17

原です。

[#19626] Re: ruby-list の過去ログの作り方 — matz@... (Yukihiro Matsumoto) 1999/12/17

まつもと ゆきひろです

[#19630] Re: ruby-list の過去ログの作り方 — Wakou Aoyama <wakou@...> 1999/12/17

青山です。

[#19698] Re: ruby-list の過去ログの作り方 — Shin-ichiro Hara <sinara@...> 1999/12/19

原です。

[#19722] [PROPOSAL] Reimplement 'blade' (Re: ruby-list =?ISO-2022-JP? B??= の過去ログの作り方) — Hideto ISHIBASHI <s34204@...> 1999/12/20

石橋秀仁です。

[#19690] Book : rb_obj_call_init() — "Shigeo Kobayashi" <shigeo@...>

小林です。

29 messages 1999/12/19

[#19776] [mswin32] TCPSocket::new() raises Errno::ENOENT — "NAKAMURA, Hiroshi" <nakahiro@...>

なひです.

17 messages 1999/12/21
[#19789] Re: [mswin32] TCPSocket::new() raises Errno::ENOENT — Koji Oda <oda@...1.qnes.nec.co.jp> 1999/12/21

小田@QNES です。

[#19858] Re: [mswin32] TCPSocket::new() raises Errno::ENOENT — Katsuyuki Komatsu <komatsu@...> 1999/12/23

小松です。

[#19934] RD with method index (again) — Koji Arai <JCA02266@...>

新井です。

78 messages 1999/12/27
[#20160] Re: RD with method index (again) — Koji Arai <JCA02266@...> 2000/01/10

新井です。

[#19937] Re: RD with method index (again) — Toshiro Kuwabara <toshirok@...3.so-net.ne.jp> 1999/12/27

Toshです。

[#19962] Re: RD with method index (again) — Koji Arai <JCA02266@...> 1999/12/28

新井です。

[#19988] Re: RD with method index (again) — Toshiro Kuwabara <toshirok@...3.so-net.ne.jp> 1999/12/29

Toshです。

[#20012] Re: RD with method index (again) — nobu.nakada@... 2000/01/02

なかだです。

[#20016] Re: RD with method index (again) — Toshiro Kuwabara <toshirok@...3.so-net.ne.jp> 2000/01/02

Toshです。

[#20017] Re: RD with method index (again) — Koji Arai <JCA02266@...> 2000/01/02

新井です。

[#20022] Re: RD with method index (again) — Toshiro Kuwabara <toshirok@...3.so-net.ne.jp> 2000/01/03

Toshです。

[#20025] Re: RD with method index (again) — Koji Arai <JCA02266@...> 2000/01/03

新井です。

[#20032] Re: RD with method index (again) — Toshiro Kuwabara <toshirok@...3.so-net.ne.jp> 2000/01/03

Toshです。

[#19976] Tell me your favorite tools — Yasushi Shoji <yashi@...>

やすしです。

25 messages 1999/12/28
[#20010] Re: Tell me your favorite tools — Yasushi Shoji <yashi@...> 2000/01/01

やすしです。

[#21496] Re: Tell me your favorite tools — OZAWA Sakuro <crouton@...> 2000/03/16

さくです。

[ruby-list:19135] Re: reference of object

From: Wakou Aoyama <wakou@...>
Date: 1999-12-03 14:47:54 UTC
List: ruby-list #19135
青山です。

On Thu, 2 Dec 1999 06:59:05 +0900,
ktokita@ma.neweb.ne.jp wrote:

> でもやっぱり データを命名規則にしたがった変数に格納して、
> 欲しいデータの変数名を作って参照するよりも、
> 規則にしたがったデータ構造をつくって、
> 欲しいデータを直接いぢるほうが美しいと思うんだけどなぁ。
> ま、これも場合によりけりか(^^;

そうですね。結局は場合によりけりですが、適したデータ構造を作る方が良さ
そうという点は同感です。変数名を明かしてユーザーまかせにするよりも、そ
の変数を扱う、適した処理をするメソッドを用意する方が親切そうですしね。

> んー、オンラインドキュメントのどこかをみて認識した事だとおもうのだけど
> 引数は値渡しになるのかと…
> いったいどこを見てそう思ったのだろう(^^;
> 過去ログの紐モデルだとか、そこら辺を流して見て eval.rbでテストして
> (私の)理解と実体を整合させました(^^;

このあたりはまだ決定的な説明が存在しないという感じです。というか、何を
ベースにして話すかによって(相手のベースになる知識によって)変化するよう
なので、複数の説明が存在する事になるようです。

実装に近い、C でのポインタの値渡しあたりをベースにする場合は、ポインタ
の値渡しという事で、値渡しであっています。

一方、実装よりではない、言語仕様をベースにする場合は、このようなポイン
タ渡しを、参照渡しと呼んでいます。言語仕様としては、参照を渡したいので
あり、ポインタを利用しているのは実装の都合でしかないという事ですね。

> > この場合、$object_a の内容をコピーして保持していくため、候補が増えて行
> > くと %object が肥大していくという問題が。
> 
> で、その理解と、昔取った杵柄の perl(もう何年も使ってない(^^;)によると
> コピーして保持していくのは $object_a じゃなくて
> "Hello world!\n"(そして "object_a") だと思うのですが

このあたりはちょっとややこしいのですが、Perl は値ベースなので、
$object_a には値そのもの(のコピー)が入っています。元の文字列を保持させ
るには、$object_a = \"Hello world!\n" のように、値ではなく、参照を取る
必要があります。

そして、$object{'object_a'} = $$object_a のようにすると、$object_a の
値ではなく、$object_a の示す "Hello world!\n" がコピーされて %object
に保持されます。

(とはいえ、%object には結局どちらも値のコピーが入るので、結果に差はあ
りません。)

> で、このコピー元の文字列って(この場合)元々ソースのスクリプトに含まれて
> いるんだから、%objectが肥大していくといっても、せいぜい2倍必要になる
> って事ですよね。

そうですね。

> むしろ、大きな違いは 代入をする時(比較データの設定とか)に、
> 書式として楽な方法を選択すると、バッファコピーのおこる頻度が
> rubyの方が少ないって事ですかね。

そうですね。Perl の場合は値ベースですから、基本的に代入等ではすべて内
容がコピーされますが、Ruby の場合は参照ベースですから、代入等では、そ
れへの参照だけが渡されるので、普通に書くと、メモリ効率は Ruby の方が良
さそうです。

より大きな違いとしては、今回の例で言えば、元の変数の変更に追随するかど
うかという点があります。

$object_a = "Hello world!\n";
%object = ();
$object{"object_a"} = $object_a;
chop($object_a);
print $object_a;                  # --> "Hello world!"
print $object{"object_a"};        # --> "Hello world!\n"

Ruby はリファレンスベースですから、元の内容が変更されても追随します。

object_a = "Hello world!\n"
object = {}
object["object_a"] = object_a
object_a.chop!
print object_a                    # --> "Hello world!"
print object["object_a"]          # --> "Hello world!"

まあ、もっとも、Perl の方もリファレンスを使えば良いだけの事ですけれどね。

$object_a = "Hello world!\n";
%object = ();
$object{"object_a"} = \$object_a;
chop($object_a);
print $object_a;                  # --> "Hello world!"
print ${$object{"object_a"}};     # --> "Hello world!"

より Ruby に近づけて、すべてをリファレンスにすると、こんな感じでしょうか。

$object_a = \"Hello world!\n";
$object = {};
${$object}{"object_a"} = $object_a;
chop($$object_a);
print $$object_a;                 # --> "Hello world!"
print ${${$object}{"object_a"}};  # --> "Hello world!"

書ける事は書けるんですよね。

ただ、このややこしいデリファレンスはちょっと...


-- 
青山 和光 Wakou Aoyama <wakou@fsinet.or.jp>

In This Thread

Prev Next