【发布时间】:2013-12-03 01:41:58
【问题描述】:
我有以下课程:
class Alphabet
attr_reader :letter_freqs, :statistic_letter
def initialize(lang)
@lang = lang
case lang
when :en
@alphabet = ('A'..'Z').to_a
@letter_freqs = { ... }
when :ru
@alphabet = ('А'..'Я').to_a.insert(6, 'Ё')
@letter_freqs = { ... }
...
end
@statistic_letter = @letter_freqs.max_by { |k, v| v }[0]
end
end
foo = Alphabet.new(:en)
这里的中心成员是@alphabet。
我想让它成为某种容器类来直接调用数组方法,比如
foo[i]
foo.include?
而不是显式访问@alphabet:
foo.alphabet[i]
foo.alphabet.include?
我知道我可以定义很多方法,比如
def [](i)
@alphabet[i]
end
但我正在寻找“继承”它们的正确方法。
【问题讨论】:
标签: ruby delegation