ruby-on-rails - Ruby 语法错误,意外 '=' ,期望 ')'

标签 ruby-on-rails ruby methods hash splat

我正在尝试为 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/

相关文章:

ruby-on-rails - Rails 语言环境回退在生产环境中不起作用

ruby-on-rails - Bundler 找不到 gem 的版本,但使用相同名称的 gem install 可以工作

ruby - 从上面的上下文返回

python - 在 Python 中使用大小

javascript - 在 HTML 方法参数 javascript 中传递数组

ruby-on-rails - 如何将html编码字符更改为ascii字符

ruby-on-rails - Rake 未初始化常量 RDoc::RDoc

ruby - col如何在Ruby代码中获取它的值 : Array. new(cells) { |col| PolarCell.new(行,列)}

Ruby 在搜索中排除目录和/或文件

java - 使用 Java 方法创建密码检查器