[#36899] シグナルのtrapについて — sakazuki <QZS01353@...>
こんにちは。sakazukiです。
7 messages
2003/01/07
[#36912] Numeric#bankers_round — Take_tk <ggb03124@...>
たけ(tk)です
5 messages
2003/01/08
[#36924] vruby030101が何か変 — Mitsuo Igarashi <mitsu5@...>
VisualuRuby を使わしていただこうと、インストールしました。
8 messages
2003/01/10
[#36926] Re: vruby030101が何か変
— NISHIKAWA <nyasu@...3web.ne.jp>
2003/01/11
こんにちは。nyasu@3web です。
[#36940] include した定数に対する defined? — ABE Shigeru <shiger-a@...>
阿部です。立て続けで、すみません。
6 messages
2003/01/16
[#36945] Arrayの判定 — Nonta <nonta@...>
はじめまして。野田と申します。
7 messages
2003/01/17
[#36955] JIS符号化ライブラリ — Satoshi Osabe <s-osabe@...>
長部と申します。
6 messages
2003/01/18
[#36957] Unicode 対応の nkf は? — Take_tk <ggb03124@...>
たけ(tk)です
6 messages
2003/01/18
[#36971] ERB2 bug? — MoonWolf <moonwolf@...>
MoonWolfです。
7 messages
2003/01/19
[#37001] CGIで画像のサイズ変更をしたい。 — FUJIOKA Takeyuki <fuji@...>
藤岡と申します。
6 messages
2003/01/27
[#37005] ruby-1.8.0 mingw build 失敗 — Mitsuo Igarashi <mitsu5@...>
ruby-1.8.0 を gcc -mno-cygwin でビルドしようとしましたが
7 messages
2003/01/27
[#37008] win2000server+rbcw164jでCGIエラー — Misawa Shinobu <misawa@...>
はじめまして。ミサワといいます。
7 messages
2003/01/27
[#37021] [RAA] RAA/2.3 — "U.Nakamura" <usa@...>
みなさんこんにちは。
20 messages
2003/01/30
[#37026] Re: [RAA] RAA/2.3
— MoonWolf <moonwolf@...>
2003/01/30
MoonWolfです。
[ruby-list:36950] Re: Arrayの判定
From:
UENO Katsuhiro <unnie@...>
Date:
2003-01-17 19:44:35 UTC
List:
ruby-list #36950
うえのです。 On Sat, 18 Jan 2003 03:13:39 +0900 Masaaki Sakano <mas@star.le.ac.uk> wrote: > 同じことですが、別解として、 > > if Array === word > > でもいいですね (word === Array は不可)。あるいは、 snip.. > ただ、、、Ruby の推奨は、Array というクラス名で直接判定ではなく、 > 必要なメソッド(の名前)があるかどうかで判断した方がよい、 > ということに(慣習として?)なっていたと理解しています。 > 例えば、Array クラスを継承した Arraynew クラスが将来できた > (作った)として、その Arraynew クラスに対しても、(上の)スクリプトは > 同じように動いて欲しい、というのが普通でしょうから。 Arraynew のインスタンスに対しても Array === word は true になります。 class Arraynew < Array end word = Arraynew.new p word.is_a? Array # => true p Array === word # => true > どのメソッド名で判断するかは場合によるでしょうが、一般的には、Array なら > > if defined? word.to_ary > > を使う、というのが、私の理解です。 to_ary というメソッドの存在は、そのオブジェクトが Array クラスの インスタンスに暗黙に変換され得るということを表しているのであって、 そのアブジェクトが配列である (もしくは配列的性質を有している) という ことを表しているのではないような気がします。 元々の例は Ruby の「配列」を Lisp のリストに変換するというのが 目的ですから、ここでは word.is_a? Array とするほうが素直では ないでしょうか。 えと、私もよく分かっている方ではないですが、メソッドだろうとクラス だろうと、このような判定をすること自体が Ruby では例外的なことです。 どちらの方法を取ったとしても例外的であることには変わりないのだから、 オブジェクトに求められる性質をより卒直に表現できる方を用いるのが 適切なのではないかと思います。 ただ、Ruby では、クラスよりもメソッドの有無のほうが、オブジェクトが 望まれる性質を有しているかどうかを判定するための情報として好ましい 局面が(圧倒的に)多いのは確かです。 -- ---- - - - -- - うえの かつひろ@体温38℃ <unnie@blue.sky.or.jp>