Tag: 平等

对三个或更多对象进行平等测试

如果我有三个或更多这样的对象: a = 4 b = 4 c = 4 d = 2 什么是干净的ruby式的方式来确定它们是否都是平等的? 在三个或更多元素上运行相等测试的任何定制方法? 我想我可以这样做: arrays = [a,b,c,d].map{|x| [x]} arrays.first == arrays.reduce(:&) ? true : false 这似乎有用,但感觉有点像火腿,其他开发人员可能很难阅读。

为什么==比eql更快?

我在文档中读到了关于eql?的String类eql? 是一个严格的相等运算符,没有类型转换,并且==是一个等于运算符,它尝试将其参数的第二个转换为String,并且此方法的C源代码确认: 这个eql? 源代码: static VALUE rb_str_eql(VALUE str1, VALUE str2) { if (str1 == str2) return Qtrue; if (TYPE(str2) != T_STRING) return Qfalse; return str_eql(str1, str2); } ==源代码: VALUE rb_str_equal(VALUE str1, VALUE str2) { if (str1 == str2) return Qtrue; if (TYPE(str2) != T_STRING) { if (!rb_respond_to(str2, rb_intern(“to_str”))) { return Qfalse; } return rb_equal(str2, str1); […]

3 Equals或Case Equality运算符

在Ruby Integer === 5返回true 。 类似String === “karthik”返回true 。 但是, 5 === Integer返回false 。 而”karthik” === String 。 为什么操作员不能交换?