[#25808] break & retry in block — Shin-ichiro HARA <sinara@...>

原です。

15 messages 2005/03/04

[#25812] Re: [ruby-cvs] ruby/test/ruby, ruby/test/logger, ruby/sample, ruby/misc, ruby/lib/xmlrpc, ruby/lib/wsdl/soap, ruby/lib/rexml, ruby/lib/rdoc/parsers, ruby/lib/rdoc/generators, ruby/lib/irb, ruby/lib, ruby/ext/zlib, ruby/ext/win32ole, ruby/ext/tk, ruby/ext/strscan, ruby/ext/socket, ruby/ext/readline, ruby/ext/pty, ruby/ext/openssl, ruby/ext/iconv, ruby/ext/etc, ruby/ext/dl, ruby/ext/curses, ruby/ext/bigdecimal, ruby/ext/Win32API, ruby: * array.c: replace rb_protect_inspect() and rb_inspecting_p() by — Tanaka Akira <akr@...17n.org>

In article <20050304064753.53859C671F@lithium.ruby-lang.org>,

3 messages 2005/03/06

[#25853] conflict method and local variable — Hidetoshi NAGAI <nagai@...>

永井@知能.九工大です.

56 messages 2005/03/10
[#25854] Re: conflict method and local variable — Yukihiro Matsumoto <matz@...> 2005/03/10

まつもと ゆきひろです

[#25855] Re: conflict method and local variable — Hidetoshi NAGAI <nagai@...> 2005/03/10

永井@知能.九工大です.

[#25856] Re: conflict method and local variable — Yukihiro Matsumoto <matz@...> 2005/03/10

まつもと ゆきひろです

[#25857] Re: conflict method and local variable — Hidetoshi NAGAI <nagai@...> 2005/03/11

永井@知能.九工大です.

[#25858] Re: conflict method and local variable — Yukihiro Matsumoto <matz@...> 2005/03/11

まつもと ゆきひろです

[#25861] Re: conflict method and local variable — Hidetoshi NAGAI <nagai@...> 2005/03/11

永井@知能.九工大です.

[#25863] Re: conflict method and local variable — Yukihiro Matsumoto <matz@...> 2005/03/11

まつもと ゆきひろです

[#25864] Re: conflict method and local variable — Hidetoshi NAGAI <nagai@...> 2005/03/11

永井@知能.九工大です.

[#25865] Re: conflict method and local variable — Yukihiro Matsumoto <matz@...> 2005/03/11

まつもと ゆきひろです

[#25866] Re: conflict method and local variable — Hidetoshi NAGAI <nagai@...> 2005/03/11

永井@知能.九工大です.

[#25869] Re: conflict method and local variable — Shugo Maeda <shugo@...> 2005/03/13

前田です。

[#25875] Re: conflict method and local variable — Yukihiro Matsumoto <matz@...> 2005/03/13

まつもと ゆきひろです

[#25878] Re: conflict method and local variable — Hidetoshi NAGAI <nagai@...> 2005/03/13

永井@知能.九工大です.

[#25882] Re: conflict method and local variable — Yukihiro Matsumoto <matz@...> 2005/03/13

まつもと ゆきひろです

[#25884] Re: conflict method and local variable — Hidetoshi NAGAI <nagai@...> 2005/03/14

永井@知能.九工大です.

[#25885] Re: conflict method and local variable — Yukihiro Matsumoto <matz@...> 2005/03/14

まつもと ゆきひろです

[#25888] Re: conflict method and local variable — Shugo Maeda <shugo@...> 2005/03/14

前田です。

[#25946] ext/tk/sample/**/*.gif are broken — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp>

山本です。

16 messages 2005/03/27

[#25959] some trouble on ext/tk/sample — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp>

山本です。

20 messages 2005/03/29
[#25969] Re: some trouble on ext/tk/sample — Hidetoshi NAGAI <nagai@...> 2005/03/30

永井@知能.九工大です.

[#25970] Re: some trouble on ext/tk/sample — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2005/03/30

山本です。

[#25973] Re: some trouble on ext/tk/sample — Hidetoshi NAGAI <nagai@...> 2005/03/31

永井@知能.九工大です.

[ruby-dev:25940] 承継クラスのメソッド定義で指定する+指定しなければ警告がでる。という案。

From: take_tk <ggb03124@...>
Date: 2005-03-23 10:05:56 UTC
List: ruby-dev #25940
たけ(tk)です

[ruby-dev:25879] Ruby2.0MethodSearchRule にて
SASADA Koichi <ko1@atdot.net> さん曰く:

> Ruby2.0MethodSearchRule
> http://pub.cozmixng.org/~the-rwiki/rw-cgi.rb?cmd=view;name=Ruby2.0MethodSearchRule

Delphiはお嫌いでしょうが、紹介しておきますと、次のようになっています。

(1)基本クラスで静的メソッドとして定義した場合は常に基本クラスのメソッ
ドが使われる。承継クラスで変更することはできない。

(2)基本クラスで仮想メソッドとして定義した場合は、承継クラスでoverride
装飾子を付けた場合には、承継クラスのメソッドが使われる。

(3)基本クラスで仮想メソッドとして定義した場合は、承継クラスでoverride
装飾子を付けない場合には、「[警告] Project1.dpr(17): 'baz' メソッドが基
本型 'C' の仮想メソッドを隠しました」という警告がでて、基本クラスのメソッ
ドが使われる。

(4)selfを付けるか付けないかでは差はない。

ということで、rubyでいえば、rubyのメソッドはDelphiの仮想メソッドに当たる
ので、承継クラスでのメソッド定義の仕方によって、動作が異なる、という仕組
みになっていることになります。

そして、本問題について考えるなら、承継クラスのメソッド定義で override で
あるか mask であるかのどちらの動作であるかを指定する。指定がない場合には
(意図が不明なので)警告がでる、というような解決案になるかと思います。

----
program Project1;

{$APPTYPE CONSOLE}

uses
  SysUtils;

type
  C = class
    procedure bar;
    procedure foo;virtual;
    procedure baz;virtual;
  end;
  CC = class(C)
    procedure foo;override;
    procedure baz;
    //[警告] Project1.dpr(17): 'baz' メソッドが基本型 'C' の仮想メソッドを隠しました
  end;

procedure C.bar;
begin
  foo;         // CC_foo
  self.foo;    // CC_foo
  baz;         // C_baz
  self.baz;    // C_baz
end;

procedure C.foo;
begin
  writeln('C_foo');
end;

procedure C.baz;
begin
  writeln('C_baz');
end;

procedure CC.foo;
begin
  writeln('CC_foo');
end;

procedure CC.baz;
begin
  writeln('CC_baz');
end;

begin
  CC.Create.bar;
  readln;
end.
----


Take_tk = KUMAGAI Hidetake
たけ(tk)=熊谷秀武


In This Thread