我在文档中读取了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);
}
Run Code Online (Sandbox Code Playgroud)
该==源代码如下:
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);
}
return str_eql(str1, str2);
}
Run Code Online (Sandbox Code Playgroud)
但是当我尝试对这些方法进行基准测试时,我感到惊讶的==是,速度比eql?高达20%快!我的基准代码是:
require "benchmark"
RUN_COUNT = 100000000
first_string = "Woooooha"
second_string …Run Code Online (Sandbox Code Playgroud) 我正在使用jquery-imagetool插件来裁剪图像.我的jquery代码如下:
$('div.image img').imagetool({
viewportWidth: 171,
viewportHeight: 267
})
Run Code Online (Sandbox Code Playgroud)
我想从div.image元素的css获取viewportWidth参数,所以我需要获取当前元素(img)并调用parent().
谁能帮我?
如果我初始化具有赋值的对象 a = b = c = []
那么这个变量有相同的object_ids: a.object_id == b.object_id == c.object_id
我也尝试过:
[a, b, c].map {|e| e = [] }
a, b, c = Array.new(3, [])
a, b, c = Array.new(3, Array.new)
Run Code Online (Sandbox Code Playgroud)
但它不会使用不同的 object_id 初始化a,b,c变量
有没有办法用不同的对象id初始化变量a,b,c但具有相同的值== []?