我确信这是Ruby中的一个基本问题:
有没有办法检查是否
a == b
即使a是整数而b是字符串?我意识到我可以做到
a.to_s == b.to_s
但我想知道是否还有其他一些更好的方法。
编辑:这个问题最初有一个拼写错误,并说a.to_s and b.to_s
是在parsenome指出错字之后编辑的。
答案 0 :(得分:4)
我不确定我是否理解这个问题。如果我理解它,我认为你正试图通过翻译来解决问题:
telemachus ~ $ irb
irb(main):001:0> a = 1
=> 1
irb(main):002:0> b = '1'
=> "1"
irb(main):003:0> a == b
=> false
您可以根据Ruby处理字符串和数字的方式比较1
和'1'
所有您喜欢的内容,但 不等。简而言之,Ruby不是Perl。 (编辑:我应该澄清。显然,数字1与字符串'1'不同。所以这不是Ruby如何处理它们的问题。如果你直接比较它们,它们'我只是意味着Ruby不会像Perl那样进行自动转换。根据你来自哪种语言以及你对打字的态度,这会让你感到高兴或惊讶或恼火,或者这些的组合。)
答案 1 :(得分:3)
如下:
class Object
def compare_as_strings(other)
return self.to_s == other.to_s
end
end
我讨厌扩展一些基本的东西,但这确实有用......
>> a = 1
=> 1
>> b = "1"
=> "1"
>> a.compare_as_strings(b)
=> true
答案 2 :(得分:0)
我没有碰到一个,Rails经常被这个绊倒,所以我怀疑没有光滑的方法去做 - 你必须强制使用to_s。
a.to_s == b.to_s
但是,可能更清晰。
(在我添加之后,在to_s比较中编辑了问题= =)