[#27441] Cannot build ruby-1.6.2 (and stable-snapshot) on HP-UX10.20 — MIANAKAWA masaru <earth@...2.sci.ibaraki.ac.jp>

皆川@茨大と言います。

16 messages 2001/02/01

[#27473] Ruby への希望 (2): シンボリックリンクの扱いの強化 — Takahiro Kambe <taca@...>

その2で、シンボリックリンクの扱いについてです。

9 messages 2001/02/03

[#27486] Open Source Festival — Masaki Suketa <CQN02273@...>

助田です。宣伝です。

18 messages 2001/02/04

[#27546] net/smtp,pop,http 1.2 pre2 — Minero Aoki <aamine@...>

あおきです。

35 messages 2001/02/06
[#27548] Re: net/smtp,pop,http 1.2 pre2 — Tanaka Akira <akr@...17n.org> 2001/02/06

In article <20010206202204E.aamine@mail.u-netsurf.ne.jp>,

[#27551] Re: net/smtp,pop,http 1.2 pre2 — Minero Aoki <aamine@...> 2001/02/06

あおきです。

[#27574] Re: net/smtp,pop,http 1.2 pre2 — Tanaka Akira <akr@...17n.org> 2001/02/07

In article <20010206221028C.aamine@mail.u-netsurf.ne.jp>,

[#27580] Re: net/smtp,pop,http 1.2 pre2 — Minero Aoki <aamine@...> 2001/02/07

あおきです。

[#27648] Re: net/smtp,pop,http 1.2 pre2 — OHSHIMA Ryunosuke <ryu@...> 2001/02/09

大島です。

[#27561] ParseDate.to_time — rubikitch <rubikitch@...>

るびきちです。

100 messages 2001/02/07
[#27657] Re: ParseDate.to_time — "Shin'ya Adzumi" <adzumi@...> 2001/02/09

あづみです。

[#27802] Re: ParseDate.to_time — Tadayoshi Funaba <tadf@...> 2001/02/13

ふなばです。

[#27831] Re: ParseDate.to_time — "Shin'ya Adzumi" <adzumi@...> 2001/02/14

あづみです。

[#27837] Re: ParseDate.to_time — Tadayoshi Funaba <tadf@...> 2001/02/14

ふなばです。

[#27848] Re: ParseDate.to_time — " たけ (tk)" <ggb03124@...> 2001/02/14

たけ(tk)です。

[#27854] Re: ParseDate.to_time — matz@... (Yukihiro Matsumoto) 2001/02/15

まつもと ゆきひろです

[#27858] Re: ParseDate.to_time — Takahiro Kambe <taca@...> 2001/02/15

In message <982195219.790355.16311.nullmailer@ev.netlab.zetabits.com>

[#27889] Re: ParseDate.to_time — Tadayoshi Funaba <tadf@...> 2001/02/15

ふなばです。

[#27890] Re: ParseDate.to_time — Takahiro Kambe <taca@...> 2001/02/15

In message <20010216003018P.tadf@kt.rim.or.jp>

[#27893] Re: ParseDate.to_time — " たけ (tk)" <ggb03124@...> 2001/02/15

たけ(tk)です。

[#27901] Re: ParseDate.to_time — matz@... (Yukihiro Matsumoto) 2001/02/15

まつもと ゆきひろです

[#27962] Re: ParseDate.to_time — " たけ (tk)" <ggb03124@...> 2001/02/17

たけ(tk)です。

[#27975] Re: ParseDate.to_time — matz@... (Yukihiro Matsumoto) 2001/02/17

まつもと ゆきひろです

[#27994] Re: ParseDate.to_time — " たけ (tk)" <ggb03124@...> 2001/02/17

たけ(tk)です。

[#28010] Re: ParseDate.to_time — Tadayoshi Funaba <tadf@...> 2001/02/18

ふなばです。

[#28014] Re: ParseDate.to_time — " たけ (tk)" <ggb03124@...> 2001/02/18

たけ(tk)です。

[#28020] Re: ParseDate.to_time — Kazuhiro Yoshida <moriq.kazuhiro@...> 2001/02/18

もりきゅうです。

[#28031] Re: ParseDate.to_time — Takahiro Kambe <taca@...> 2001/02/18

In message <200102180841.AA00612@euler.nifty.ne.jp>

[#28036] Re: ParseDate.to_time — とみたまさひろ <tommy@...> 2001/02/18

とみたです。

[#27565] importenv.rb — rubikitch <rubikitch@...>

るびきちです。

19 messages 2001/02/07
[#27573] Re: importenv.rb — "K.Kosako" <kosako@...> 2001/02/07

rubikitchさんの<20010207124131-15878M.takashi@localhost>から

[#27576] Re: importenv.rb — "Nobuyoshi.Nakada" <nobu.nakada@...> 2001/02/07

なかだです。

[#27588] interbase6 — Naoto Hiroshima <taisei-in@...>

こんにちは。

14 messages 2001/02/07

[#27631] 文字数 — Kenji Noda <zaq94465a@...>

野田と申します

23 messages 2001/02/08
[#27632] Re: 文字数 — rubikitch <rubikitch@...> 2001/02/08

From: Kenji Noda <zaq94465a@cat.zero.ad.jp>

[#27644] Re: 文字数 — Kenichi Komiya <kom@...1.accsnet.ne.jp> 2001/02/08

[#27674] 配列をハッシュへ — Naoto Hiroshima <taisei-in@...>

こんにちは。

32 messages 2001/02/10
[#27852] Re: 配列をハッシュへ — Shin-ichiro HARA <sinara@...> 2001/02/15

原です。

[#27853] Re: 配列をハッシュへ — Naoto Hiroshima <taisei-in@...> 2001/02/15

こんにちは。

[#27856] Re: 配列をハッシュへ — matz@... (Yukihiro Matsumoto) 2001/02/15

まつもと ゆきひろです

[#27857] Re: 配列をハッシュへ — Naoto Hiroshima <taisei-in@...> 2001/02/15

こんにちは。 Ruby をありがとうございます。

[#27860] Re: 配列をハッシュへ — "Nobuyoshi.Nakada" <nobu.nakada@...> 2001/02/15

なかだです。

[#27724] [Q] about RWiki and ref.manual — Minero Aoki <aamine@...>

あおきです。

19 messages 2001/02/11
[#27726] Re: [Q] about RWiki and ref.manual — Koji Arai <JCA02266@...> 2001/02/11

新井です。

[#27727] Re: [Q] about RWiki and ref.manual — Minero Aoki <aamine@...> 2001/02/11

あおきです。

[#27836] Ruby/Gtk compile error — tsone@... (曽根俊彦)

今晩は、曽根俊彦です。

21 messages 2001/02/14
[#27839] Re: Ruby/Gtk compile error — IWAOKA Masahiro <iwaoka@...> 2001/02/14

いわおかです。気づいたとこだけ。

[#27850] Re: Ruby/Gtk compile error — tsone@... (曽根俊彦) 2001/02/14

IWAOKA Masahiro <iwaoka@tuat.jac-net.com> writes:

[#27868] Re: Ruby/Gtk compile error — Hiroshi IGARASHI <igarashi@...> 2001/02/15

いがらしです。

[#27859] 【質問】“ Ruby プログラミング入門”の内容について (From 超初心者) — Nobuo hirata <psy-1114@...2.so-net.ne.jp>

はじめまして、“うえの”という超初心者です、よろしくお願い致します。

21 messages 2001/02/15
[#27863] Re: 【質問】“ Ruby プログラミング入門”の内容について (From 超初心者) — WATANABE Hirofumi <eban@...> 2001/02/15

わたなべです。

[#27886] Re: 【質問】“ Ruby プログラミング入門”の内容について (From 超初心者) — Nobuo hirata <psy-1114@...2.so-net.ne.jp> 2001/02/15

わたなべさん、レス有り難う御座います。

[#27894] Re: 【質問】“ Ruby プログラミング入門”の内容について (From 超初心者 ) — Inoue Shinobu <VEF00372@...> 2001/02/15

[#27980] Dir[pattern] — Kazuhiro NISHIYAMA <zn@...>

2バイト目に「\」を含むファイル名がDir['*']で出てきません。

18 messages 2001/02/17
[#27984] Re: Dir[pattern] — "U.Nakamura" <usa@...> 2001/02/17

こんにちは、なかむら(う)です。

[#27988] Re: Dir[pattern] — "U.Nakamura" <usa@...> 2001/02/17

こんにちは、なかむら(う)です。

[#28071] HTML::Template みたいなもの — Hirosato Matsuura <matswra@...>

松浦@コムデザイン といいます。

21 messages 2001/02/19
[#28093] Re: HTML::Template みたいなもの — Hirosato Matsuura <matswra@...> 2001/02/20

松浦@コムデザインです

[#28078] 正規表現で <!-- コメント --> の認識 — kai13@...

Tree型htmlパーザーを開発していてるのですが、

14 messages 2001/02/20

[#28138] handling of #! — Takahiro Kambe <taca@...>

こんばんは。

25 messages 2001/02/21
[#28139] Re: handling of #! — nobu.nakada@... 2001/02/21

なかだです。

[#28142] Re: handling of #! — Takahiro Kambe <taca@...> 2001/02/22

In message <200102211914.EAA01450@sharui.nakada.kanuma.tochigi.jp>

[#28143] Re: handling of #! — "Nobuyoshi.Nakada" <nobu.nakada@...> 2001/02/22

なかだです。

[#28145] Re: handling of #! — Takahiro Kambe <taca@...> 2001/02/22

In message <200102220405.NAA19549@m2.gw.fujitsu.co.jp>

[#28146] Re: handling of #! — "Nobuyoshi.Nakada" <nobu.nakada@...> 2001/02/22

なかだです。

[#28147] Re: handling of #! — Takahiro Kambe <taca@...> 2001/02/22

In message <200102220912.SAA27681@m5.gw.fujitsu.co.jp>

[#28154] Re: handling of #! — nobu.nakada@... 2001/02/22

なかだです。

[#28219] Cast — Shin-ichiro HARA <sinara@...>

原です。

19 messages 2001/02/24

[#28231] CGI でのロック (was: File.rename の例外) — DEQ <deq@...>

DEQです。

12 messages 2001/02/24

[#28258] txt文に変更したい — Inoue Shinobu <VEF00372@...>

こんなこと、RUBYでできないもんでしょうか。

17 messages 2001/02/25

[#28281] kidou opushon wo dokoni? — Inoue Shinobu <VEF00372@...>

助田さんの作ってくださった

41 messages 2001/02/25
[#28444] Re: kidou opushon wo dokoni? — Masaki Suketa <masaki.suketa@...> 2001/03/03

助田です。

[#28504] Re: kidou opushon wo dokoni? — Inoue Shinobu <VEF00372@...> 2001/03/05

[#28524] Re: kidou opushon wo dokoni? — " たけ (tk)" <ggb03124@...> 2001/03/05

たけ(tk)です。

[#28548] Re: 日本語表示にこだわりが・・・ — Inoue Shinobu <VEF00372@...> 2001/03/06

newさん、みなさんこんにちは。申し訳ありませんがもう少しおつきあいしてくだ

[#28333] Re: argument to instance_eval block(Re: — 正木 功 <GEC01122@...>

正木です。

29 messages 2001/02/27
[#28334] Re: argument to instance_eval block(Re: — "Nobuyoshi.Nakada" <nobu.nakada@...> 2001/02/27

なかだです。

[#28336] Re: argument to instance_eval block(Re: — Minero Aoki <aamine@...> 2001/02/27

あおきです。

[#28338] Re: argument to instance_eval block(Re: — "K.Kosako" <kosako@...> 2001/02/27

Minero Aokiさんの

[#28341] Re: argument to instance_eval block(Re: — keiju@... (石塚圭樹) 2001/02/27

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

[#28353] Re: argument to instance_eval block — Minero Aoki <aamine@...> 2001/02/27

あおきです。

[#28368] 【要望】 EmacsLisp みたいなフック — kai13@...

ファイルリストなどをフィルタリングする時に然るべきタイミングで

16 messages 2001/02/28
[#28369] Re: 【要望】 EmacsLisp みたいなフック — matz@... (Yukihiro Matsumoto) 2001/02/28

まつもと ゆきひろです

[#28370] Re: 【要望】 EmacsLisp みたいなフック — kai13@... 2001/02/28

On Wed, 28 Feb 2001 15:57:38 +0900

[ruby-list:28219] Cast

From: Shin-ichiro HARA <sinara@...>
Date: 2001-02-24 07:06:30 UTC
List: ruby-list #28219
原です。

久しぶりに提案です。型キャストの話です。

Ruby で数学などしていると、やたらクラスばかり作ってしまって、何がなん
だか分からなくなることがあります。例えば、配列はそれをベクトルと見たり、
順列と見たり、集合と見たりするわけで、それぞれの「見なし」のためには面
倒でもそれぞれ Array に delegate するクラスを作り、その都度オブジェク
トを new で作るのが正式な方法です。しかし、昔は組み込みクラスはインス
タンス変数を持てなかったのでしかたが無かったのですが、今では delegate 
ではなく、直接 Array を継承するのもオーライかと思います。そこで、型変
換の仕組みを考えてみました。

ところで、実は既に型変換のようなものは備わっていて、例えば Array::[] 
があります。仮に Array の要素の総和を与える sum を定義することを考えま
しょう。ここで Array に組み込んでしまうのはシステム全体に影響があるの
で、サブクラスにします。

class Array2 < Array
   def sum
     tot = 0
     each do |x| tot += x; end
     tot
   end
end

そすると、Array はうまいことできていて Array2::[] が Array::[] を
継承してうまく動いてくれます。だからこんな風に使えます。

(各行の和を求めるスクリプト)
while line = gets
   puts( Array2[*line.split.collect{|x| Integer(x)}].sum )
end

これは Array2[] がキャストを行ってくれているのだと見ることができます。
これに似たキャストの仕組みを全てのクラスに持たせようというわけです。

で、キャストの形式ですが、Array2**obj のようにしようかと思います。本当
は [] を使いたいところですが、既に使われいるので。しかも、** は結合力
が強く、かつ、右結合なのもいいところです。これを使うと上はこんな風に書
けます。

while line = gets
   puts( (Array2**line.split.collect{|x| Integer(x)}).sum )
end

さて、これを行う仕組みですがいたってシンプルです。キャストをしたいクラ
スには、メソッド casting を用意します。casting は基本的には配列を返し、
クラス Foo のインスタンス foo に対して

   Foo.new(* foo.casting)

が foo.dup と同じ効果をもつように定義します。そして Class では、キャスト
を casting を使って行うわけです。次が Ruby で書いた例です。

class Class
   def **(other)
     new(* other.casting)
   end
end

一般のクラスでキャストしたい(されたい?)クラスでは次のように定義して
おくといいでしょう。

class Foo
   def initialize(a, b, c)
     @a, @b, @c = a, b, c
   end
   def casting
     [@a, @b, @c]
   end
end

基本は上の通りなのですが、組み込みクラス Array の new は特殊な意味があ
るので、** はこのままではうまくありません。また、効率を考えると、多少
統一性が失われても、組み込みクラスに対しては余計な配列オブジェクトを作
らないように工夫しておいた方がいいでしょう。例えば、

class Class
   def **(other)
     if self <= Array or self <= Hash
       self[*other.casting]
     elsif self <= String
       new(other.casting)
     else
       new(*other.casting)
     end
   end
end

class String
   def casting; self; end
end
class Array
   def casting; self; end
end
class Hash
   def casting; to_a.flatten; end
end
class Range
   def casting
     [first, last, exclude_end?]
   end
end

みたいに。

で、提案なんですが、この Class#** と「組み込みクラスの」casting を組
み込みで用意したらどうかということです。

今見たように Ruby で書けるなら組み込みにする必要ないではないか、という
意見もありそうですが、TCPSocket.casting なんか自分で書くのちょっと面倒
ですよね。

また、これは余計かもしれませんが、次の Class#castable というのもあると
便利かもしれません。Ruby で書くと

class Class
   private
   def castable
     eval "class Object; def #{name}; #{name}**self; end; end",
       TOPLEVEL_BINDING
   end
end

みたいな感じで、

class Foo
   castable
end

とすると、Object#Foo が Foo**(obj) をするようになるというものです。
(ただし先の定義例では castable は継承できません。)


ご意見いかがでしょう。こういうのがあると便利だと思いませんか?

class String2 < String
   castable
   def each(&b); each_byte(&b); end
end
"ABCDE".String2.collect{|x| x - ' '[0]} #=> [33, 34, 35, 36, 37]

class Hash
   castable
end
%w{abc, 0, efg, 1}.Hash #=> {"abc" => "0", "efg" => "1"}


最後にもう一度、キャストの仕組みを Ruby で書きかけたものを添えておきま
す。

-----^ cast.rb
class Class
   def **(other)
     if self <= Array or self <= Hash
       self[*other.casting]
     elsif self <= String
       new(other.casting)
     else
       new(*other.casting)
     end
   end
end

class String
   def casting; self; end
end
class Array
   def casting; self; end
end
class Hash
   def casting; to_a.flatten; end
end
class Range
   def casting; [first, last, exclude_end?]; end
end

##### TEST #####
class String2 < String
   def each(&b); each_byte(&b); end
end
p( (String2**"ABCDE").collect{|x| x - ' '[0]} ) #=> [33, 34, 35, 36, 37]

class Array2 < Array
   def sum
     tot = 0
     each do |x| tot += x; end
     tot
   end
end
p( (Array2**[1, 2, 3, 4, 5]).sum ) #=> 15

class Class
   private
   def castable
     eval "class Object; def #{name}; #{name}**self; end; end",
       TOPLEVEL_BINDING
   end
end

class String2 < String
   castable
end
p "ABCDE".String2.collect{|x| x - ' '[0]} #=> [33, 34, 35, 36, 37]

class Array2 < Array
   castable
end
p [1, 2, 3, 4, 5].Array2.sum #=> 15

class Hash
   castable
end
p %w{abc 0 efg 1}.Hash #=> {"abc" => "0", "efg" => "1"}
-----$ cast.rb

In This Thread

Prev Next