Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Ruby中将字符串转换为条件_Ruby_String_Boolean_Conditional Statements - Fatal编程技术网

在Ruby中将字符串转换为条件

在Ruby中将字符串转换为条件,ruby,string,boolean,conditional-statements,Ruby,String,Boolean,Conditional Statements,实际上我有一个名为“cond”的字符串。这是该字符串的内容: "20 < 50" 因此,我想知道是否有可能将字符串转换为条件,以在“if”条件中设置。如果可能的话,我该怎么做 谢谢。可能就是你在这里的朋友: >> eval('20 < 50') => true >评估('20

实际上我有一个名为“cond”的字符串。这是该字符串的内容:

"20 < 50"
因此,我想知道是否有可能将字符串转换为条件,以在“if”条件中设置。如果可能的话,我该怎么做

谢谢。

可能就是你在这里的朋友:

>> eval('20 < 50')
=> true
>评估('20<50')
=>正确

但是,
eval
将在其参数内执行任意代码;您应该确保您的
cond
不能包含任何对系统健康有害的内容

使用eval的一种替代方法可能是编写一个评估器(或使用/修改现有的评估器,如)

正如他的代码要求您编写lt、gt、eq等等,而不是,==。如calc.rb中的评论所述:


如果您知道条件始终是基本的,如您提供的示例,则可以执行以下操作:

left, op, right = "20 < 50".split
cond = left.to_i.send(op.to_sym, right.to_i)
左,op,right=“20<50”。拆分
cond=左至右发送(操作至符号,右至符号)

使用eval会起作用,但我认为有更好的方法可以做到这一点——不过,更好的方法可能存在于程序的整体结构中。
>> eval('20 < 50')
=> true
# Equality and its clan (note we cannot use '==' or other two-character
# non-word operators, because of the way we parse the string.  Non-word
# characters come in one at a time.
left, op, right = "20 < 50".split
cond = left.to_i.send(op.to_sym, right.to_i)