【发布时间】:2019-08-27 23:09:21
【问题描述】:
我正在做一个作业,我创建了两个使用 splatter 方法获取参数的方法(加法和减法)。我正在尝试修改每种方法,以便我也可以将数组作为参数传递。我尝试使用条件语句来检查我的参数是否为数组,但这不起作用。
这是我的代码:
class Math
def initialize
puts "Welcome to Math Dojo"
self
end
def add (*nums)
@sum = nums.reduce :+
if nums == []
nums.reduce :+
puts "The sum is #{@sum}"
self
end
def subtract (*nums)
@diff = nums.reduce :-
if nums == []
nums.reduce :-
end
puts "The difference is #{@diff}"
self
end
end
我需要代码通过以下测试:
challenge1 = Math.new.add(2).add(2, 5).subtract(3, 2) # => 4
challenge2 = Math.new.add(1).add([3, 5, 7, 8], [2, 4.3, 1.25]).subtract([2,3], [1.1, 2.3])
challenge3 = Math.new.add(2, 5).subtract(9, 3, 5, 2)
代码当前将通过challenge1 和challenge3。如何修改它以通过所有三个?
【问题讨论】:
-
请(编辑)用文字解释什么是“飞溅法”。您指的是“以下测试”。在第一个中,所需结果显示为
4,但其他两个未显示所需结果。也许您可以显示计算结果所涉及的计算(而不是代码),例如,Math.new.add(1,2).add([3, 4], [5,6]).subtract([7,8], [12,10]),第一步是将其减少到Math.new.add(3).add(7,11).subtract(-1, 2),然后将其减少到Math.new.add(3).add(18).subtract(-3),最后获得18?顺便说一句,Ruby 有一个内置模块Math。 -
"that didn't work" 不是一个足够精确的错误描述,我们无法为您提供帮助。 什么不起作用? 如何不起作用?你的代码有什么问题?您收到错误消息吗?错误信息是什么?你得到的结果不是你期望的结果吗?你期望什么结果,为什么,你得到的结果是什么,两者有什么不同?您正在观察的行为不是期望的行为吗?期望的行为是什么,为什么,观察到的行为是什么,它们有何不同?
标签: arrays ruby methods addition