[#38470] ruby-dev summary 21403-21530 (draft) — Minero Aoki <aamine@...>

青木です。

25 messages 2003/10/07
[#38475] Re: ruby-dev summary 21403-21530 (draft) — maili31s@... (SugHimsi==SUGIHARA Hiroshi) 2003/10/07

すぎむし。

[#38480] Re: ruby-dev summary 21403-21530 (draft) — Minero Aoki <aamine@...> 2003/10/08

青木です。

[#38481] marshal_dump (was Re: ) — m_seki@... 2003/10/08

[#38484] Re: marshal_dump (was Re: ) — matz@... (Yukihiro Matsumoto) 2003/10/09

まつもと ゆきひろです

[#38486] Re: marshal_dump (was Re: ) — Masatoshi Seki <m_seki@...> 2003/10/09

咳といいます

[#38489] exit status on exit! — YANAGAWA Kazuhisa <kjana@...4lab.to>

<http://www.unixuser.org/~ysjj/diary/?200310a&to=200310082#200310082>

29 messages 2003/10/09
[#38490] Re: exit status on exit! — Koji Arai <JCA02266@...> 2003/10/09

新井です。

[#38503] Re: exit status on exit! — YANAGAWA Kazuhisa <kjana@...4lab.to> 2003/10/10

In Message-Id: <20031010.082218.74733862.JCA02266@nifty.ne.jp>

[#38505] Re: exit status on exit! — Koji Arai <JCA02266@...> 2003/10/10

新井です。

[#38507] Re: exit status on exit! — matz@... (Yukihiro Matsumoto) 2003/10/11

まつもと ゆきひろです

[#38514] Re: exit status on exit! — YANAGAWA Kazuhisa <kjana@...4lab.to> 2003/10/11

In Message-Id: <1065883639.405037.23137.nullmailer@picachu.netlab.jp>

[#38515] Re: exit status on exit! — WATANABE Hirofumi <eban@...> 2003/10/11

わたなべです。

[ruby-list:38685] String サブクラスのメソッドが返すクラスについて

From: starfish <starfish@...6.so-net.ne.jp>
Date: 2003-10-27 15:47:00 UTC
List: ruby-list #38685
藤田と申します。

% ruby -v
ruby 1.6.7 (2002-03-19) [i386-linux]

String のサブクラスとして、SubString を定義したとき、
メソッド
[first...last], +, <<
のそれぞれが返すインスタンスのクラスが異なっています。
これは、意図したものなのでしょうか?
感覚的には、全て、SubString クラスを返すのかなと
思ったのですが。不思議。
一応、リファレンスマニュアル中の 'Ruby 変更履歴'
などを読んでみたのですがそれらしい記述は無かったように思いますので、
1.8 でも同様なのだと、推測しています。

具体的には以下に述べる通りです。

リファレンスマニュアルでは、

[first...last] => '文字列を返す'
+              => '文字列を返す'
<<             => self を返す

となっています。それぞれ、返すクラスは

[first...last] => SubString1
+              => String
<<             => SubString1

となっています。

% irb
irb(main):001:0> class SubString < String
irb(main):002:1> end
nil
irb(main):003:0> ss = SubString.new("str")
"str"
irb(main):004:0> ss.class
SubString
irb(main):005:0> ss[0...3].class
SubString
irb(main):006:0> (ss + ss).class
String
irb(main):007:0> ( ss << ss ).class
SubString
irb(main):008:0>


In This Thread

Prev Next