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);

Published: October 01 2013

  • category:
blog comments powered by Disqus