I think the issue of string vs symbol hash access came up recently.
Here’s a function I use I thought I’d share for C extension writers:
/* Example:
*
-
Equivalent to hash[‘alpha’] || hash[:alpha]
- rb_hash_aref2(v_hash, “alpha”)
- Returns nil if neither is found.
/
static VALUE rb_hash_aref2(VALUE v_hash, char key){
VALUE v_key, v_val;
v_key = rb_str_new2(key);
v_val = rb_hash_aref(v_hash, v_key);
if(NIL_P(v_val))
v_val = rb_hash_aref(v_hash, ID2SYM(rb_intern(key)));
return v_val;
}
Regards,
Dan