Ruby中的类型无差异的比较

时间:2009-08-07 15:12:43

标签: ruby syntax

我确信这是Ruby中的一个基本问题:

有没有办法检查是否

a == b

即使a是整数而b是字符串?我意识到我可以做到

a.to_s == b.to_s 

但我想知道是否还有其他一些更好的方法。

编辑:这个问题最初有一个拼写错误,并说a.to_s and b.to_s是在parsenome指出错字之后编辑的。

3 个答案:

答案 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比较中编辑了问题= =)