CRubyのソースコード 破壊的メソッドのサフィックス
趣味でCRubyのソースコードリーディングをしています。 Rubyの実装なのに、Rubyとは全然違う文化で名前が付けられていて面白いです。 C言語の文化はよく知らないので、その辺を押さえておくと読みやすくなるのかも。
今日読んでてふと気づいたのは、破壊的メソッドのCレベルの関数名は サフィックスで _bang と付いていること。 Rubyでいう、Array#sort! みたいなやつです。 C側では、rb_ary_sort_bang です。
こんな感じで、Array#sortはrb_ary_sortだけど、Array#sort!には_bangが付いています。
rb_define_method(rb_cArray, "sort", rb_ary_sort, 0);
rb_define_method(rb_cArray, "sort!", rb_ary_sort_bang, 0);
blog comments powered by Disqus