我一直在尝试进行红宝石字符串比较,但似乎无法正常工作
max == "value"
if user.name == max
我也尝试过使用eql方法,但似乎没有任何工作
max.eql(user.name)
虽然价值相同,但这并不奏效。 可能是什么原因?
答案 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这样的语言中,许多变量可以绑定到同一个对象。如果以破坏性方式更新对象,则会反映在绑定到同一对象的所有变量上。另一方面,它不会影响绑定另一个对象的变量,即使该对象恰好具有与第一个对象相同的值。
更新:海报在发布此答案后更改了问题。