【发布时间】:2014-01-31 17:40:08
【问题描述】:
所以这是可行的,除了一个问题,它属于方法计算。我正在使用 TDD 程序,它告诉我一切正常,除了当计算通过 (0,3,5) 时,它会插入 5 作为选项,而实际上它应该只是默认为加法并将所有数字相加到0, 3, 5 因为选项部分是空白的。我该如何做到这一点,以便删除选项,或者如果那里什么都没有,则只传递 true 以便代码通过而不添加:true 或减去:true?
def add(*numbers)
numbers.inject(0) { |sum, number| sum + number }
end
def subtract(number1,*additionalnums)
number1-add(*additionalnums)
end
def calculate(*addsubtract, options)
result = add(*addsubtract) if options[:add]
result = subtract(*addsubtract) if options [:subtract]
result = calculate.delete(-1) if options.is_a?(Symbol)
result
end
【问题讨论】:
-
请用语言标记您的问题。
-
你能编辑你的问题并添加一些关于如何使用的代码吗?这看起来是一种非常尴尬的方式,可能会被改进。
-
嗯...我去看看。
-
它并不完全是重复的,但问题是对 splats 的类似误解。这个问题应该可以解决问题。
-
因此,DGM 引用的“splat 参数后的可选参数”的答案实际上是我试图在 RubyMonk 网站上找出的问题的给定解决方案。显然,那个人正在做同样的事情。我明白为什么会这样。但是,我试图弄清楚是否有一种方法可以根据我当前的代码进行计算,在 splat 之后使用一个选项,如果没有传递给它,它会以某种方式使选项无效。