testingRubystring或符号的string相等(不是对象相等)的最简洁方法?

我总是这样做在Ruby中testingstring的平等:

if mystring.eql?(yourstring) puts "same" else puts "different" end 

这是没有testing对象平等做到这一点的正确方法吗?

我正在寻找最简洁的方式来testingstring的内容。

用括号和问号,这似乎有点笨重。

根据http://www.techotopia.com/index.php/Ruby_String_Concatenation_and_Comparison

做任何一个

 mystring == yourstring 

要么

 mystring.eql? yourstring 

是等同的。

你的代码示例没有扩展你的主题的一部分,即符号,所以这个问题的一部分没有得到答复。

如果你有两个string,foo和bar,两者都可以是string或者符号,你可以用

 foo.to_s == bar.to_s 

在已知types的操作数上跳过string转换会更高效一些。 所以如果foo总是一个string

 foo == bar.to_s 

但是,效率的提高几乎肯定不值得要求代表调用者做任何额外的工作。

在Ruby 2.2之前,为了比较目的(避免使用string或符号),避免实施不受控制的inputstring,因为符号不是垃圾回收,因此可以通过资源耗尽打开自己的拒绝服务。 将符号的使用限制为您控制的值,即代码中的文字和可信的configuration属性。

Ruby 2.2 引入了符号的垃圾回收 。