我正在尝试为 Rubymonk 的 Ruby 练习编写自己的解决方案,其目的是创建三个方法(加法、减法和计算),这样当调用“计算”时,您可以确定是否添加数字或根据传入的内容减去。我收到以下错误:
main:11: 语法错误,意外的“=”,期望“)” defcalculate(*numbers, options={})
谁能告诉我我的代码有什么问题吗?感谢您的任何帮助!
def add(*numbers)
numbers.inject(0) {|sum, number| sum + number}
end
def subtract(*numbers)
numbers.inject{|diff, number| diff - number}
end
def calculate(*numbers, options={})
result = add(numbers) if options.empty?
result = add(numbers) if options[:add]
result = subtract(numbers) if options[:subtract]
result
end
最佳答案
def calculate(*numbers, options={})
不是一个有效的方法定义 b/c *numbers
取代了可变数量的参数。在我看来,你有两个选择 -
def calculate(options={}, *numbers)
或
def calculate(*args)
numbers, options = args[0..-2], args[-1] || {}
如果你想保持相同的参数顺序
关于ruby-on-rails - Ruby 语法错误,意外 '=' ,期望 ')',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19714103/