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 有人能在这里提供一些关于最佳策略的启示吗?

作为我所遵循的测试优先ruby课程的一部分,我需要创建一个基本的乘法方法,该方法首先获取2个参数并将它们相乘,但之后rspec将测试在同一方法中将多个数字相乘的能力

我想确认一下我的假设,因为Ruby不支持方法重载,所以我只需要让我的一个乘法函数接受一个数组,然后执行以下操作:

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
。谢谢!我在这里找到了一个很好的解释: