1
作为我所测试的第一个ruby课程的一部分,我需要做一个基本的乘法方法,首先接受2个参数并乘以它们,但在rspec之后测试用相同的方法将几个数字相乘。红宝石“乘法”功能策略
我只是想我的假设的确认,因为红宝石犯规支持方法重载,我将不得不只让我一个乘法函数接受一个数组,并做到以下几点:
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
不文档做这样的,但我最近访问这个资源:[RubyMonk:方法(HTTP ://rubymonk.com/learning/books/1-ruby-primer/chapters/19-ruby-methods/lessons/69-new-lesson)。最后一部分是一个加减计算器 - 可能对您有用。基本上,你想看'*参数',其中'*'表示“未知数量的参数” – onebree
您需要从'total = 1'开始 – iamnotmaynard
这会创建一个方法'Object#multiply'('method(:multiply ).owner => Object')。你确定这是被问到的吗?难道你希望创建一个实例方法'Array#multiply'?那将是'class Array; def multiply; self.reduce(:*);结束; end'。然后'[1,2,3] .multiply#=> 6; [1,2,3.2] .multiply#=> 6.4'。 –