我从练习中坚持了这个练习。
sum_of_multiples_test.rb
的一部分...
def test_sum_to_1000
skip
assert_equal 233168, SumOfMultiples.to(1000)
end
def test_configurable_7_13_17_to_20
assert_equal 51, SumOfMultiples.new(7, 13, 17).to(20)
end
...
sum.rb
class SumOfMultiples
def initialize(*args)
@args = args ||= [3,5]
end
def to(max)
ary = []
return 0 if max < 2
@args.each do |m|
for i in 0..max-1
ary << i if i % m == 0
end
end
ary.uniq!.inject(:+)
end
end
如果我使用类方法self.to,它不能看到我的实例变量@args,如果我使用 实例方法&#34; def to&#34;第一次测试没有通过。有没有办法以某种方式&#34;合并&#34;既?
答案 0 :(得分:0)
为您的班级添加另一种方法:
def self.to(max)
new.to(max)
end
您现在可以调用其中的每一个,结果将是相同的:
SumOfMultiples.to(1000)
SumOfMultiples.new.to(1000)