मैं एक रूबी 1.9 सी विस्तार लिख रहा हूँ और मैं रूबी में निम्न कार्य करने के:मैं रुबी 1.9 सी एक्सटेंशन में ब्लॉक को प्रो में कैसे परिवर्तित करूं?
notifier = Notifier.new
notifier.on 'click' do
puts "clicked!"
end
अब इस के साथ समस्या यह है कि सी पद्धति पर, मैं केवल "प्राप्त" एक ब्लॉक है, और, जहां तक मुझे पता है, यह एक पैरामीटर भी नहीं है: मैं बस rb_yield
के साथ कॉल कर सकता हूं।
तो मेरा सवाल यह है: क्या रूबी 1.9 सी एक्सटेंशन पर एक ब्लॉक को एक प्रोसेस या किसी चीज़ में बदलने के लिए कोई तरीका है, इसलिए मैं इसे अपने मॉड्यूल के अंदर स्टोर कर सकता हूं, और इसे जब भी चाहूं उसे बाद में कॉल कर सकता हूं? एक async कॉलबैक की तरह!
मैंने इसे पहले ही प्रोसेस/लैम्बडास के साथ कार्यान्वित किया है, लेकिन यह केवल बदसूरत है कि ब्लॉक सिंटैक्स का उपयोग न करें।
क्या आपने यह देखा है [http://banisterfiend.wordpress.com/2008/09/25/metaprogramming-in-the-ruby-c-api-part-one-blocks/) आलेख (विशेष रूप से "स्पष्ट ब्लॉक "पैराग्राफ)? यह पुराना हो सकता है लेकिन अन्यथा ऐसा लगता है कि आपको क्या चाहिए। –
क्षमा करें, मैं आपके प्रश्न का उत्तर नहीं दे सकता, क्योंकि मुझे सी और न ही वाईएआरवी सी एपीआई पता नहीं है, लेकिन अन्य पाठकों के लिए स्पष्टीकरण के रूप में, आपका प्रश्न मूल रूप से है: "मैं (& blk) अंत में कैसे करूं सी से ", है ना? –