From: Daniel Berger Date: 2010-10-16T22:16:26+09:00 Subject: Accessing a hash value by string or symbol in C 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