Ruby C API でシンボルの等価性をテストする方法を見つけようとしています。次の C 関数を検討してください。
static VALUE test_symbol_equality(VALUE self, VALUE symbol) {
if (rb_intern("test") == symbol) {
return Qtrue;
} else {
return Qfalse;
}
}
Ruby の観点からは、このメソッドは期待どおりに動作しません。
test_symbol_equality(:test) # => false
これはなぜですか?期待される動作を実現するには、コードをどのように変更する必要がありますか?