对于x
是数组的ruby,x.include?(y)
如何检查y
中是否x
?算法是什么?
答案 0 :(得分:6)
作为Greg Hewgill回答的补充,Ruby 1.9.3中针对此方法的源代码是:
VALUE
rb_ary_includes(VALUE ary, VALUE item)
{
long i;
for (i=0; i<RARRAY_LEN(ary); i++) {
if (rb_equal(RARRAY_PTR(ary)[i], item)) {
return Qtrue;
}
}
return Qfalse;
}
因此,正如Greg所说,算法只是通过数组的线性搜索。
答案 1 :(得分:3)
由于数组不必排序,因此算法不能比“查看每个元素并查看它是否匹配”更好。