[ruby-list:50374] Re: [質問] module内のclass内private関数をオーバーライド
From:
"H.Hiro" <main@...>
Date:
2016-08-07 13:32:34 UTC
List:
ruby-list #50374
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
MySample.new.output # => 200
# puts MySample.new.foo # 例外
なお、子クラス側でprivateを抜くと、子クラスのfooメソッドはpublicメソッドになります。
2016年8月5日 20:13 <yamataka@u08.itscom.net>:
> 山口と申します。
>
> module内のclass内private関数をオーバーライドしたいのですが、
> その記述の仕方がよく分からないので、ご教示いただければ幸いです。
>
> == 自分のプログラム
> require 'easy_upnp'
>
> …
> devices = EasyUpnp::SsdpSearcher.new(search_options).search(options[:
> search_target])
> == (自分のプログラム)
>
> == module内のclass内private関数
> Module EasyUpnp
> Class SsdpSearcher
> ….
>
> private
>
> def build_socket
> …
> end
> end
> == (module内のclass内private関数)
>
> module: EasyUpnp
> class : SsdpSearcher
> private関数: build_socket
> を自分のプログラム内で、オーバーライドしたいのですが…
>
>
>
--
H.Hiro / Maraigue
http://hhiro.net/about/
main@hhiro.net