[#21157] あったらうれしいメソッド to_n, to_n!, to_s! — ogino@...

荻野です。あったらうれしいメソッドということで書いてみます。

16 messages 2000/03/03

[#21159] メソッドの入り口 — ogino@...

荻野です。もうひとつご指導ください。

93 messages 2000/03/03
[#21170] Re: メソッドの入り口 — Shin-ichiro Hara <sinara@...> 2000/03/03

原です。

[#21243] Re: メソッドの入り口 — keiju@... (石塚圭樹) 2000/03/07

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

[#21247] Re: メソッドの入り口 — 中村暁史 Nakamura Akifumi <BXQ04723@...> 2000/03/07

[#21267] 引数コピーとオブジェクト指向 (Re: メソッドの入り口) — Hideto ISHIBASHI <s34204@...> 2000/03/08

石橋秀仁です。

[#21272] Re: 引数コピーとオブジェクト指向 (Re: メソッドの入り口 ) — 中村暁史 Nakamura Akifumi <BXQ04723@...> 2000/03/08

[#21276] Re: 引数コピーとオブジェクト指向 (Re: メソッドの入り口 ) — nobu.nakada@... 2000/03/09

なかだです。

[#21279] Re: 引数コピーとオブジェクト指向 (Re: メソッドの入り口 ) — ogino@... 2000/03/09

oop未満の世界観の荻野です。

[#21282] Re: 引数コピーとオブジェクト指向 — Tomoyuki Kosimizu <greentea@...2.so-net.ne.jp> 2000/03/09

越水です。

[#21285] Re: 引数コピーとオブジェクト指向 — ogino@... 2000/03/10

荻野です。

[#21365] Re: 引数コピーとオブジェクト指向 — Matsuo Hisanori <hisanori@...> 2000/03/13

松尾です。

[#21293] Re: 引数コピーとオブジェクト指向 — Matsuo Hisanori <hisanori@...> 2000/03/10

松尾です。

[#21297] Re: 引数コピーとオブジェクト指向 — ogino@... 2000/03/10

荻野です。

[#21302] Re: 引数コピーとオブジェクト指向 — 土岐 仁謙 <toki@...> 2000/03/10

土岐です。

[#21371] Re: 引数コピーとオブジェクト指向 — Matsuo Hisanori <hisanori@...> 2000/03/13

松尾です。

[#21374] Re: 引数コピーとオブジェクト指向 — TADA Tadashi <sho@...> 2000/03/13

ただただしです。

[#21280] raise non-Exception object — Kenichi Komiya <kom@...3.rim.or.jp>

24 messages 2000/03/09
[#21283] Re: raise non-Exception object — nobu.nakada@... 2000/03/09

なかだです。

[#21315] Re: raise non-Exception object — Kenichi Komiya <kom@...3.rim.or.jp> 2000/03/11

[#21342] Re: raise non-Exception object — nobu.nakada@... 2000/03/12

なかだです。

[#21384] ruby 1.4.4 — matz@... (Yukihiro Matsumoto)

まつもと ゆきひろです

35 messages 2000/03/13

[#21442] 配列内のソート — Takayuki Tanaka <tanaka@...>

こんにちは Tanです。

16 messages 2000/03/15

[#21583] ruby for Web — TAKAHASHI Masayoshi <maki@...>

高橋征義です。

27 messages 2000/03/22
[#21584] Re: ruby for Web — "NAKAMURA, Hiroshi" <nakahiro@...> 2000/03/22

なひです.

[#21649] net-1.1.10 — TAKAHASHI Masayoshi <maki@...>

高橋征義です。net/http 使いたおし中。

17 messages 2000/03/27

[#21669] new version of mod_ruby & eRuby — Shugo Maeda <shugo@...>

前田です。

14 messages 2000/03/28

[ruby-list:21172] Re: メソッドの入り口

From: Minero Aoki <aamine@...>
Date: 2000-03-03 08:08:48 UTC
List: ruby-list #21172
あおきです。

  In mail "[ruby-list:21164] Re: メソッドの入り口"
    Matsuo Hisanori <hisanori@sitc.toshiba.co.jp> wrote:

> 松尾です。

> > > 1) オブジェクトの型が想定しているものと違うかもしれない
> > 
> > > うけども、なんとなくスマートではないですよね。
> > 
> > must.rb(だったっけ?)ってのを使うと少しスマートに
> > 書けるそうですね。

ぼくが amstd/must なるものをでっちあげた帳本人です。

  str.must String

ってぐあいに使います。
が、しかし前に前田さんもおっしゃっていたように、Ruby において
型チェックはあまり推奨されません。理由は以下のようです。

* 多態性による使いかたの広がりがなくなる。

  たとえば、Array String IO にはどれも each と << が
  あるので

  def copy( src, dest )
    src.each {|i| dest << i }
  end

  の src dest のそれぞれについて三種類のどれを与えることもできます。
  しかしこれに型チェックをいれてしまうとその可能性を奪います。

* 型チェックは Ruby では本質的な意味をもたない。

  変数に型がある言語では型宣言が同時にインターフェイスの保証を
  することが多いです。しかし Ruby では undef alias instance_eval
  module_eval などを駆使すれば後からあらゆるクラスのインターフェイスと
  実装を完璧に破壊することができます。また、拡張モジュールを作れば
  クラスを「詐称」することも可能です。
  そのような環境においてクラスをチェックしてみても意味がありません。

* 結局、そのような場合(予想しない型がきた)の対処法はプログラマが
  プログラムを修正するしかない。

  これは、松尾さんがおっしゃっているとおりです。
  しかし、もちろんデバッグ時に「ここは String のはず」というように
  チェックをしておくのは意味があります。
  ぼくが must.rb を使ってるのもその点で意味があるからです。
  開発中のソースに .must をちりばめておいて、ちゃんと動くように
  なった時点で順次外していきます。


> > > 2) インスタンス変数へ代入するときはコピーをつくるべきか
> > 
> > 用途によります。この一言。

ぼくも賛成です。


> > > 3) メソッドの実行中に別スレッド中でオブジェクトが変化するかも
> > 
> > スレッドは疎いですが、これも用途次第かな…
> 
> スレッドセーフにしないといけないメソッドと、そうでないメソッドは分析過
> 程で分かってくる(嘘かも^^;)ので、心配しすぎる必要はないかも。再利用時
> にも使う前に分析するだろうし。

スレッドセーフでないなら「ここはスレッドセーフじゃないよ」
と書いておけばいいと思います。
また、データを変化させないでほしいならやっぱり
「変化させたら結果は保証できない」と書いておけばいいのだと思います。


ぼくもついついライブラリになんでもやらせようとしちゃうタイプなんですが、
別にライブラリ(とか)であらゆる状況の面倒を見る必要はなくて、
むしろ必要なのは、どのような責任を果たすのか、どのような限界があるのかを
明示することだと思います。

そういうのを言語として(不完全ながら)持ってるのが Eiffel で、
それはドキュメントと(人間の)意志疎通にまかせてもっと気軽に書こうぜ
っていうのが Ruby ではないでしょうか。
-------------------------------------------------------------------
あおきみねろう

In This Thread