Ruby “红宝石”;乘;功能策略
作为我所遵循的测试优先ruby课程的一部分,我需要创建一个基本的乘法方法,该方法首先获取2个参数并将它们相乘,但之后rspec将测试在同一方法中将多个数字相乘的能力 我想确认一下我的假设,因为Ruby不支持方法重载,所以我只需要让我的一个乘法函数接受一个数组,然后执行以下操作:Ruby “红宝石”;乘;功能策略,ruby,rspec,overloading,Ruby,Rspec,Overloading,作为我所遵循的测试优先ruby课程的一部分,我需要创建一个基本的乘法方法,该方法首先获取2个参数并将它们相乘,但之后rspec将测试在同一方法中将多个数字相乘的能力 我想确认一下我的假设,因为Ruby不支持方法重载,所以我只需要让我的一个乘法函数接受一个数组,然后执行以下操作: def multiply(arr) total = 0 arr.each do |x| total *= x end return total end 有人能在这里提供一些关于最佳策略的启示吗?
def multiply(arr)
total = 0
arr.each do |x| total *= x end
return total
end
有人能在这里提供一些关于最佳策略的启示吗?我已经对了吗?以下是rspec:
describe "#multiply" do
it "multiplies two numbers" do
multiply(3,9).should == 27
end
it "multiplies several numbers" do
multiply([1,2,3,4]).should === 24
end
end
就
乘法的实现而言,最简单的方法就是这样做
def multiply(*numbers)
numbers.reduce(:*)
end
p multiply(10,2)
p multiply(10,2,3)
不是文档,但我最近访问了此资源:。最后一部分是一个加法和减法的计算器——可能对您有用。基本上,您需要查看*参数
,其中*
表示“未知数量的参数”,您需要从total=1
开始。这将创建一个方法Object#multiply
(方法(:multiply).owner=>Object
)。你确定这就是被问到的问题吗?是否希望您创建一个实例方法Array#multiply
?那将是类数组;def倍增;自还原(:*);结束;结束
。然后[1,2,3]。乘以#=>6;[1,2,3.2]。乘法#=>6.4
。谢谢!我在这里找到了一个很好的解释: