[ruby-list:50418] Re: [質問]
From:
dezawa <dezawa@...>
Date:
2016-10-05 17:24:47 UTC
List:
ruby-list #50418
module に分ける意図が
class NetAudio にインスタンスmethod を追加するところにある
のか、
module 内に class を定義し、その instance
に何かやらせるところにあるのか、
によって変わります。
前者でしたらこんな感じでしょうか
module UPnP
def upnp_render_play
puts "#{__method__} device:#{@device}"
end
end
module WebAPI
def webapi_au_play
puts "#{__method__} ip:#{@ip}"
end
end
class NetAudio
include UPnP
include WebAPI
def initialize(device)
@device, @ip = device
end
end
後者でしたらこんな感じでしょうか
class NetAudio
def initialize(device)
@upnp = UPnP::UPnP_Render.new(device[0])
@webapi = WebAPI::WebAPI_AU.new(device[1])
end
def webapi_au_play
@webapi.webapi_au_play
end
def upnp_render_play
@upnp.upnp_render_play
end
end
名前が面白くないので、私でしたら
UPnP_Render の def upnp_render_play を def render_play に
WebAPI の def webapi_au_play を def au_play に
して
class NetAudio
attr_reader :upup, :webapi
def initialize(device)
@upnp = UPnP::UPnP_Render.new(device[0])
@webapi = WebAPI::WebAPI_AU.new(device[1])
end
end
として,こんなふうに呼びます
device=["device info data","aa,bb,cc,dd"]
obj = NetAudio.new(device)
obj.webapi.au_play
obj.upnp.render_play