मैं कैसे मॉड्यूल में class_eval उपयोग करने के लिए सीख रहा हूँ (मैं class_eval साथ कुछ हद तक परिचित हूँ) और this helpful class in resource_controller बारे में जाना। वहाँ में वे इस तरह बातें हैं:क्या class_eval << करता है - "end_eval", __FILE__, __LINE__ रूबी में क्या मतलब है?
class_eval <<-"end_eval", __FILE__, __LINE__
def #{block_accessor}(*args, &block)
unless args.empty? && block.nil?
args.push block if block_given?
@#{block_accessor} = [args].flatten
end
@#{block_accessor}
end
end_eval
क्या __FILE__
और __LINE__
उस संदर्भ में क्या करता है? मैं __FILE__
का संदर्भ वर्तमान फ़ाइल पता है, लेकिन क्या है कि पूरी बात वास्तव में क्या करता है? वास्तव में यह नहीं पता कि उस के लिए कैसे खोज करें :)।
यह उल्लेख करना अच्छा होगा कि इसके बजाय 'define_method' का उपयोग करने के लिए इस तरह की चाल की आवश्यकता नहीं होगी, साथ ही यह भेद्यताएं नहीं खोलेंगे (http://stackoverflow.com/questions/3003328/how-do-i-use-class-eval/3003509#3003509 देखें) –