[#35688] サブクラスのオブジェクト生成時に、スーパークラスの初期化を行うには ? — Onodera Takafumi <onodera-tak@...>

9 messages 2002/08/01

[#35772] Unsecure world writeable dirの警告 — "井上 浩一" <kyoui32@...>

=1B$B0f>e$G$9!#=1B(B

31 messages 2002/08/26
[#35774] Re: Unsecure world writeable dir の警告 — matz@... (Yukihiro Matsumoto) 2002/08/26

まつもと ゆきひろです

[#35775] Re: Unsecure world writeabledir の警告 — nobu.nakada@... 2002/08/26

なかだです。

[#35776] Re: Unsecure world writeabledir の警告 — matz@... (Yukihiro Matsumoto) 2002/08/26

まつもと ゆきひろです

[#35778] Re: Unsecure world writeabledir の警告 — nobu.nakada@... 2002/08/26

なかだです。

[#35779] Re: Unsecure world writeabledir の警告 — WATANABE Hirofumi <eban@...> 2002/08/26

わたなべです。

[#35780] Re: Unsecure world writeabledir の警告 — nobu.nakada@... 2002/08/26

なかだです。

[#35784] Re: Unsecure world writeabledir の警告 — "U.Nakamura" <usa@...> 2002/08/26

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

[#35854] Re: Unsecure world writeabledir の警告 — "Inoue" <rubyist@...1.117.ne.jp> 2002/09/04

井上です。

[#35865] Re: Unsecure world writeabledir の警告 — Koji Arai <JCA02266@...> 2002/09/05

新井です。

[#35866] Re: Unsecure world writeabledir の警告 — matz@... (Yukihiro Matsumoto) 2002/09/06

まつもと ゆきひろです

[#35789] multipart な CGI を速くしたい — Takashi Kanai <kanai@...4u.or.jp>

Windows上でRubyとMySQLを使ってショッピングサイトのようなものを作って

17 messages 2002/08/28

[ruby-list:35730] how to share some value through parent class's method

From: YANAGAWA Kazuhisa <kjana@...4lab.to>
Date: 2002-08-09 16:55:04 UTC
List: ruby-list #35730
最近いじってたスクリプトでの話.

クラスで適当に選択肢を抱えておいて,インスタンス生成時にそれを使うとい
うことを考えました.具体的には

    class Foo
      <var> = [:foo, :bar, :baz]
    
      def initialize
        @alternatives = <var>
      end
    end
    
という形.これだけだったら <var> としては Constant か @@class_variable 
を使うことができます.それはそれでいい.


問題は,親クラスのメソッドでこんな感じの定義をしつつ,子クラスでは
<var> のみを書きかえたいという場合.つまり上記の Foo に対して

    class Bar < Foo
      <var> = [:goo, :car, :caz]
    end

とだけして,bar = Bar.new で bar の @alternatives が [:goo, :car,
:caz] になって欲しい.


<var> として Constant を使うと Bar での書きかえは効きません.
Foo#initialize として Foo::Constant を見てしまう.

一方 @@class_variable だとどうかといえば,今度はもう一つ別のクラスを作っ
たら破綻してしまう.

# Foo を含む子クラス全てで共有されるから,それぞれが個別の値を持てない.


結局クラスのインスタンス変数を使って

    class Foo
      @alternatives = [:foo, :bar, :baz]
    
      def Foo.new
        super(@alternatives)
      end
    
      def initialize(alt)
        @alternatives = alt
      end
    end
    
    class Bar
      @alternatives = [:goo, :car, :caz]
    end

というようなコードを書いたのですが,何かもうちょっとましなやり方ってな
いものでしょうか?

# 何か勘違いしてるだけっていうのが簡単でいいな....

# ちなみに <http://www.dm4lab.to/~kjana/ruby/ror.tar.gz> なんてのが実
# 際のコード.テストがちゃんと動いてるのかどうかまともに確認してないし,
# だいたい完成してもえらく効率が悪いという難点あり :-P


-- 
柳川和久 @ 東大阪市 . 大阪府                                August 10, 2002
「え,月ってただ空に描いてあるだけじゃなかったの? うそー」
「うそーってエレン....」

In This Thread

Prev Next