是否有惯用的 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/