不能做ruby字符串比较

时间:2011-12-02 10:44:28

标签: ruby

我一直在尝试进行红宝石字符串比较,但似乎无法正常工作

max == "value"
if user.name == max 

我也尝试过使用eql方法,但似乎没有任何工作

 max.eql(user.name)

虽然价值相同,但这并不奏效。 可能是什么原因?

2 个答案:

答案 0 :(得分:0)

这是因为白色空间。尝试做

if user.name.strip == max

strip将删除所有空格

答案 1 :(得分:0)

在分配与比较时,Ruby使用与C相同的语义。

x = y

将为x 分配y,即使这是在if表达式中完成的。

第二次尝试使用eql(真的应该是eql?)会失败,因为如果x.eql?(y)和{{1} true返回x相同的对象。它们具有相同的价值是不够的。

请注意,在像Ruby这样的语言中,许多变量可以绑定到同一个对象。如果以破坏性方式更新对象,则会反映在绑定到同一对象的所有变量上。另一方面,它不会影响绑定另一个对象的变量,即使该对象恰好具有与第一个对象相同的值。

更新:海报在发布此答案后更改了问题。