estoy escribiendo una extensión de Ruby 1.9 C y quiero hacer lo siguiente en rubí:¿Cómo convierto un bloque a un proceso en una extensión Ruby 1.9 C?
notifier = Notifier.new
notifier.on 'click' do
puts "clicked!"
end
Ahora el problema con esto es que en el método C, sólo "reciben" un bloque, y, por lo que yo sé, ni siquiera es un parámetro: sólo puedo llamar con la rb_yield
.
Así que mi pregunta es: ¿hay alguna manera en una extensión Ruby 1.9 C, para transformar un bloque en un proceso o algo así, así puedo almacenarlo dentro de mi módulo y llamarlo más tarde cuando lo necesite o necesite? Como una devolución de llamada asíncrona!
ya he implementado esto con procs/lambdas, pero es igual de fea no utilizar la sintaxis del bloque directamente.
Ha visto [este] artículo (http://banisterfiend.wordpress.com/2008/09/25/metaprogramming-in-the-ruby-c-api-part-one-blocks/) (especialmente "explícito bloquea el "párrafo"? Puede ser obsoleto, pero de lo contrario se parece a lo que necesita. –
Lo siento, no puedo responder a su pregunta, porque yo no sé ni la API C YARV C, sino como una aclaración a otros lectores, su pregunta básicamente es: "¿cómo lo hago' definición en (y negro) end' de C ", ¿verdad? –