ruby-on-rails - 为平等比较字符串/符号的最佳模式?

标签 ruby-on-rails ruby

是否有惯用的 Ruby 模式来测试两个“字符串”是否相等,而不管操作数是字符串还是符号?

我想使用一些运算符来执行此比较::abc == 'abc'.to_sym 而无需将操作数规范化为字符串或符号。

active_support 中的 HashWithIndifferentAccess 行为是一个非常有用的类比,可以用来类比我正在寻找的东西。

最佳答案

如果你想在任何地方修补通用功能。

class Object
  def to_s_equals? var
    self.to_s == var
  end
end 

如前所述,仅将符号转换为字符串,而不是将字符串转换为符号,除非您随后要使用该符号。你可以更具体,只在 Symbol 上这样做

或者,您可以为字符串和符号添加一些内容,但我想不出一个好的通用名称。

class Symbol
  def equals_string? var
    self.to_s == var
  end
end 

class String
  def equals_symbol? var
    self == var.to_s
  end
end

即便如此,equals 也不是很正确,但是 match 可以推断出一个正则表达式。 同源 也许吧? (结构上对应,功能上不一定)

我不认为您在 to_s == 上变得很简洁。执行比较的顺序可能有点清晰。

关于ruby-on-rails - 为平等比较字符串/符号的最佳模式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24961442/

相关文章:

ruby-on-rails - ruby rails : localhost:3000/my_pages_dont_show_up

ruby-on-rails - 为我在 Rails 3 中进行集成测试的方法提供帮助

mysql - Windows 7 中的 Ruby on Rails

ruby-on-rails - Rails 如何在渲染 json 时更改属性名称?

ruby-on-rails - rails : Encoder error when converting video using FFMPEG on Heroku

ruby-on-rails - 找出在 Ruby/Rails 中定义方法的位置(相对于 Java)

javascript - Rails 5 - 以 json 格式将数据从 Controller 发送到 javascript

ruby-on-rails - store_path 中的 Carrierwave : error with model. id

ruby-on-rails - 在 Heroku 上运行 ruby​​-debug

ruby-on-rails - 无法为Rails项目安装mysql2 gem