RubyInlineでsingleton method作れるんか
Rubyの中にC言語を埋め込めて高速化を図れる
RubyInlineは大変便利かと思います。
sampleではinstance methodの埋め込みばっかり例に出ているんですが
moduleのsingletonメソッドか作りたくなったのでソース見てみたら普通にありました。
'c'でなくって'c_singleton'メソッドを使うとsingletonメソッドになります。
require 'inline' module World inline do |builder| builder.c_singleton <<-CODE VALUE hello(){ return rb_str_new2("Hello,World!"); } CODE end end puts World.hello
Hello,World!
普通のmethodがあって、singleton methodがあって、
private methodはないようです。
なんでなんで〜
ちなみに以下のようにしてもprivateメソッドにはなりませんよ。
require 'inline' class World private inline do |builder| builder.c <<-CODE VALUE hello(){ return rb_str_new2("Hello,World!"); } CODE end end puts World.new.hello
Hello,World!