我总是这样做来测试Ruby中的字符串相等性:
if mystring.eql?(yourstring)
puts "same"
else
puts "different"
end
Run Code Online (Sandbox Code Playgroud)
这是在没有测试对象相等性的情况下执行此操作的正确方法吗?
我正在寻找最简洁的方法来根据内容测试字符串.
用括号和问号,这看起来有点笨重.
Jas*_*att 137
根据http://www.techotopia.com/index.php/Ruby_String_Concatenation_and_Comparison
做任何一个
mystring == yourstringRun Code Online (Sandbox Code Playgroud)
要么
mystring.eql? yourstringRun Code Online (Sandbox Code Playgroud)
是等价的.
she*_*onh 13
您的代码示例没有扩展您的主题的一部分,即符号,因此问题的一部分未得到答复.
如果你有两个字符串,foo和bar,并且两者都可以是字符串或符号,你可以用它来测试相等性
foo.to_s == bar.to_s
Run Code Online (Sandbox Code Playgroud)
跳过具有已知类型的操作数的字符串转换效率更高一些.所以如果foo总是一个字符串
foo == bar.to_s
Run Code Online (Sandbox Code Playgroud)
但效率提升几乎肯定不值得为代表呼叫者的任何额外工作.
在Ruby 2.2之前,为了进行比较(使用字符串或符号),请避免实例化不受控制的输入字符串,因为符号不是垃圾收集的,因此您可以通过资源耗尽来打开拒绝服务.将符号的使用限制为您控制的值,即代码中的文字和受信任的配置属性.
Ruby 2.2 引入了符号的垃圾收集.
| 归档时间: |
|
| 查看次数: |
99548 次 |
| 最近记录: |