[#5880] "Linux Journal Vol.6" carries an article on Ruby — Shin-ichiro HARA <sinara@...>

原です。

16 messages 1998/01/19
[#5881] Re: "Linux Journal Vol.6" carries an article on Ruby — matz@... (Yukihiro Matsumoto) 1998/01/19

まつもと ゆきひろです

[#5905] win and unix, and so on — TAKAHASHI Masayoshi <maki@...>

高橋と申します。はじめまして。しばらくROMしてました。

27 messages 1998/01/20
[#5906] Re: win and unix, and so on — matz@... (Yukihiro Matsumoto) 1998/01/20

まつもと ゆきひろです

[#5912] Re: win and unix, and so on — WATANABE Hirofumi <watanabe@...> 1998/01/20

わたなべです.

[#5922] Re: win and unix, and so on — Shin-ichiro HARA <sinara@...> 1998/01/20

原です。

[#5951] How to use TkMenu ? — Kikutani Makoto <kikutani@...>

きくたにです。

16 messages 1998/01/21
[#5952] Re: How to use TkMenu ? — matz@... (Yukihiro Matsumoto) 1998/01/21

まつもと ゆきひろです

[#6023] Comparison with Other Languages (Re: [python-ml-jp 54] Re: Reasons why I prefer to use Python) — matz@... (Yukihiro Matsumoto)

まつもと ゆきひろです

8 messages 1998/01/26

[#6055] Ruby連載 第3回 — matz@... (Yukihiro Matsumoto)

まつもと ゆきひろです

68 messages 1998/01/28
[#6057] Re: Ruby 連載 第 3 回 — Kikutani Makoto <kikutani@...> 1998/01/28

きくたにです。

[#6060] Re: Ruby 連載 第 3 回 — matz@... (Yukihiro Matsumoto) 1998/01/28

まつもと ゆきひろです

[#6073] Re: Ruby連載 第3回 — hisanori@... 1998/01/28

松尾です。こんばんは。

[#6089] Re: Ruby連載 第3回 — matz@... (Yukihiro Matsumoto) 1998/01/29

まつもと ゆきひろです

[#6119] man/date/time — Tadayoshi Funaba <tadf@...>

こんにちは、ちょっと訊きたいことがあります。

37 messages 1998/01/29
[#6128] lib/date.rb (Re: man/date/time) — matz@... (Yukihiro Matsumoto) 1998/01/30

まつもと ゆきひろです

[#6136] Re: man/date/time — keiju@... (石塚圭樹 ) 1998/01/30

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

[#6155] Re: man/date/time — Tadayoshi Funaba <tadf@...> 1998/01/31

>すいません. ruby-devにだけポストしていました.

[ruby-list:6116] Re: Ruby連載 第3回

From: shugo@... (Shugo Maeda)
Date: 1998-01-29 12:02:42 UTC
List: ruby-list #6116
前田です。

In message "[ruby-list:6089] Re: Ruby連載 第3回"
Yukihiro Matsumoto <matz@netlab.co.jp> wrote:

|まず,Rubyに関数ポインタがないのはSmalltalk的とでもいうよう
|な古典的オブジェクト指向モデルを採用しているからです.この辺
|は関数ポインタをベースにしているオブジェクト指向モデルの
|Pythonとは大きく違うところです.どっちが良いかと言うのは主観
|ですが.
|
|そういうモデルなので,単純には「関数ポインタを渡せば良いや」
|で済まなかったのが,第1の理由です.なんらかの方法で関数ポイ
|ンタに当たるものを生成できないといけないわけです.
|
|で,Smalltalkでは「ブロックオブジェクトを引数にする」という
|方法を選び,Rubyでは「イテレータブロックを暗黙の引数にする」
|という方法を選んだわけです.

実はこの間Javaオブジェクトを操作するためだけに作った
インタープリタでは、実装の簡単さのために(^^;)Python
とSmalltalkの折衷案みたいにしてしまいました。

def collect(elements, func):
    result = #[];
    for i in elements:
	result << func(i);
    end;
    return result;
end;
      
v = #["foo", "bar", "baz"];
v2 = collect(v, [ str:
    str.toUpperCase();
]);

あるいは、

def func(str):
    return str.toUpperCase();
end;
v2 = collect(v, func);

でもこうするためには変数と関数で名前空間を共有させないと
いけないのですよね...。
Javaはメソッドとフィールドに同じ名前を使えるので、関数は
オブジェクトだけどメソッドはオブジェクトではない、という
中途半端な実装になってしまいました。

|  * forが実装しやすい
|
|    とっつきやすさのためfor文が欲しかったのですが,ブロック
|    を渡すというセマンティックスではちょっと意味的に??な部
|    分が出て来ます.

forはEnumeration(外部イテレータ)を使うためのシンタックスシュガー
にしました。

keys = hash.keys();
while keys.hasMoreElements()
    println(keys.nextElement());
end;

の代りに、

for i in hash.keys():
    println(i);
end;

と。
でも、Javaで外部イテレータを採用していたのでこうしたわけ
ですが、外部イテレータって定義するのが面倒ですしRubyには
合いませんよね。
# 速度も外部イテレータの方が遅そうですし。

-- 
前田 修吾

In This Thread