Ruby“乘法”函数策略

stu*_*tck 3 ruby rspec overloading

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

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

def multiply(arr)
    total = 0
    arr.each do |x| total *= x end
    return total
end
Run Code Online (Sandbox Code Playgroud)

有人可以在这里提供有关最佳策略的一些启示吗?我已经正确了吗?这是 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
Run Code Online (Sandbox Code Playgroud)

Wan*_*ker 5

multiply就实施而言,最简单的是这样做

def multiply(*numbers)
    numbers.reduce(:*)
end

p multiply(10,2)
p multiply(10,2,3)
Run Code Online (Sandbox Code Playgroud)