ruby - 如何实现数组中表达式的操作顺序?

标签 ruby

给定表达式

1 * 2 / 3 + 4

在实现操作顺序时,我试图写出方程的所有可能变体。如:

(1 * 2) / 3) + 4

(1 * (2 / 3)) + 4

这是我现在拥有的:

expression = [1.0, "+", 2.0, "+", 3.0, "+", 4.0]
storage = []

exp1 = expression    #Make new object because insert method will overwrite expression object
storage << exp1.insert(0, "((").insert(4, ")").insert(7, ")")

但是 exp1 的变化也反射(reflect)在表达式中。我什至用不同的方法制作它们,但变化不断反射(reflect)在表达上。

如何保持表达式对象不变?我总共需要配置原始表达式 5 次,但是当我使用 insert 时,我很难保持它的干净。阅读 Ruby 文档,insert 方法是唯一适合我正在做的事情的方法。

除了数组之外,我是否必须使用不同的数据结构来存储 1 * 2/3 + 4

最佳答案

考虑使用 #dup 这样您就不会更改原始集:

expression.dup.insert(0, "((").insert(4, ")").insert(7, ")")

关于ruby - 如何实现数组中表达式的操作顺序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37354925/

相关文章:

ruby-on-rails - 当表单上的字段不可用时,是否仍可以编辑模型值?

ruby-on-rails - 使用 Barby gem 打印 - 条码图像模糊

ruby - 为什么我使用 Ruby 注入(inject)的斐波那契数列不起作用?

浏览器中的 Ruby pdf 测试

ruby-on-rails - 如何将 PGSeaerch 结果链接到嵌套资源中的索引页?

ruby-on-rails - Rails 在哪里存储夏令时的开始和结束日期?

ruby - Ruby-Elastic Search和RabbitMQ-数据导入丢失,脚本无提示崩溃

ruby-on-rails - noi4r gem 安装问题

ruby-on-rails - Ruby (on Rails) 支持 Web 服务组合和 OWLS?

c++ - 在 Qt HTML5 应用程序中使用替代脚本语言