【发布时间】:2009-07-25 18:15:39
【问题描述】:
class Device
def initialize(device_id, data_resource)
@id = device_id
@data_resource = data_resource
end
def display_device
mode = @data_resource.get_display_device_mode(@id)
presets = @data_resource.get_display_device_presets(@id)
summary = "display_device: #{mode} ($#{presets})"
return "* #{summary}" if presets == "XTC909"
summary
end
def chip
mode = @data_resource.get_chip_mode(@id)
presets = @data_resource.get_chip_presets(@id)
summary = "chip: #{mode} ($#{presets})"
return "* #{summary}" if presets == "XTC909"
summary
end
def input_device
mode = @data_resource.get_input_device_mode(@id)
presets = @data_resource.get_input_device_presets(@id)
summary = "input_device: #{mode} ($#{presets})"
return "* #{summary}" if presets == "XTC909"
summary
end
end
从上面的代码可以看出,方法中有相当多的冗余。 不管元编程是否是减少这种冗余的最佳方法,如果有人可以提供一些建议,我希望学习如何在 Ruby 中使用元编程来减少一些重复性。
【问题讨论】:
标签: ruby metaprogramming