[ruby-list:50376] Re: [質問] module内のclass内private関数をオーバーライド

From: <yamataka@...08.itscom.net>
Date: 2016-08-15 10:42:30 UTC
List: ruby-list #50376
> H.Hiroです。

H.Hiroさん

山口です。

アドバイスありがとうございました。

> オーバーライドは単に、子クラスでprivateを付けたメソッドを書くだけでで
きます。
> 
> # 親クラス
> class Sample
>   def output
>     puts foo
>   end
> 
>   private
>   def foo
>     100
>   end
> end
> 
> Sample.new.output # => 100
> # puts Sample.new.foo # 例外
> 
> # 子クラス
> class MySample < Sample
>   private
>   def foo
>     200
>   end
> end

その後、Webで色々調べた結果

== 自分のProgram
require 'easy_upnp'

module EasyUpnp # moduleと同じ名前で、定義を再開

  class MySsdpSearcher # module内のclass名と同じ名前で、クラス定義を変更

    def build_socket
      puts "Hello my build_socket"
    end
 
 end

end
== (自分のプログラム)

のような記述で、希望の動作になりました。





In This Thread

Prev Next