【问题标题】:Evaluate string as an expression将字符串计算为表达式
【发布时间】:2014-12-13 21:33:11
【问题描述】:

如何将像“2 + 3 + 4”这样的字符串转换为 ruby​​ 将返回值 9 的表达式

但作为整数。我在想某种 .each 块,但我觉得那将是一个很长的函数。如果这是唯一的方法,那很好。只是想让其他人看看它。

【问题讨论】:

  • 有人在不提供答案的情况下投反对票。在 4 小时的大部分时间里,我一直在 goole 和 stack 上寻找一种方法来做到这一点。我只是在寻求帮助。
  • google.com/#q=ruby+execute+string+as+ 或 google.com/#q=ruby+expression+string+as+ ... 即使您不知道要包含的魔法词(评估),也不难找到
  • 这是真的,我想我一直在使用关键字solve。如果不允许我使用 eval 怎么办?然后呢?
  • 哈哈...我不知道关于 ruby​​ 的第一件事。我什至不确定我为什么要在这里发表评论......谷歌上的第一个答案应该为你回答:google.com/#q=ruby+eval+without+eval
  • 谢谢。我需要用我的 google-fu 变得更好。再次。感谢大家的帮助!

标签: ruby math metaprogramming


【解决方案1】:

看看Kernel#eval

[~]$ irb
2.1.2 :001 > eval("2 + 3 + 4")
 => 9
2.1.2 :002 > eval("2 + 3 + 4").class
 => Fixnum

希望对你有帮助

【讨论】:

  • 请注意 eval 可以执行任何 Ruby 代码,而不仅仅是数学,所以要非常小心,不要评估用户提供的字符串——这可能会被利用来窃取数据、删除文件等
猜你喜欢
  • 2011-01-17
  • 1970-01-01
  • 2018-05-19
  • 2015-12-03
相关资源
最近更新 更多