दिलचस्प पोस्ट
.NET 4 GUID कैसे उत्पन्न होते हैं? यह क्रिया पूरी नहीं की जा सकती पुनः प्रयास करें (-22421) दो चरण की तलाश – स्पष्टीकरण की आवश्यकता आईओएस में jQuery के क्लिक ईवेंट काम नहीं कर रहे हैं सभी मोबाइल ब्राउज़र के लिए पूर्ण वेबपेज और अक्षम ज़ूम व्यूपोर्ट मेटा टैग ASP.NET MVC में दृश्य संकलित करें Oozie: ओज़ी <जावा> कार्रवाई से मानचित्र-कमी शुरू करें? कैसे Wget के साथ लॉगिन पृष्ठ पिछले पाने के लिए? कैसे हाइबरनेट HQL परिणामों के साथ प्रकार सुरक्षा चेतावनियों से बचने के लिए? होम पेज पर रीडायरेक्ट कैसे करें अगर उपयोगकर्ता लॉग इन होने के बाद प्रवेश पृष्ठ पर पहुंच जाता है? Java.sql.PreparedStatement से क्वेरी प्राप्त करें जावा वेब अनुप्रयोग के लिए शटडाउन हुक एसक्यूएल इंजेक्शन स्ट्रिंग से बचने के लिए कैसे रोकें शेल कमांड में "&&" का उद्देश्य क्या है? PHP में एक चर के अस्तित्व की जांच करने का सर्वोत्तम तरीका; isset () स्पष्ट रूप से टूट गया है

रूबी में ऑब्जेक्ट की एक गहरी प्रतिलिपि बनाने के लिए कैसे?

मैंने कुछ खोजों को एक गहरी कॉपी ऑपरेटर बनाने के बारे में कुछ अलग तरीके और पद पाए।

क्या रूबी में गहरी प्रतिलिपि ऑब्जेक्ट के लिए एक त्वरित और आसान (अंतर्निर्मित) तरीका है? फ़ील्ड एरेज़ या हैश नहीं हैं

रुबी में काम 1.9.2

वेब के समाधान से एकत्रित समाधान "रूबी में ऑब्जेक्ट की एक गहरी प्रतिलिपि बनाने के लिए कैसे?"

दीप की नकल वेनिला रूबी में नहीं बनाई गई है, लेकिन आप इसे मार्शलिंग और ऑब्जेक्ट को उतारने से रोक सकते हैं:

Marshal.load(Marshal.dump(@object)) 

यह हालांकि सही नहीं है, और सभी वस्तुओं के लिए काम नहीं करेगा एक अधिक मजबूत विधि:

 class Object def deep_clone return @deep_cloning_obj if @deep_cloning @deep_cloning_obj = clone @deep_cloning_obj.instance_variables.each do |var| val = @deep_cloning_obj.instance_variable_get(var) begin @deep_cloning = true val = val.deep_clone rescue TypeError next ensure @deep_cloning = false end @deep_cloning_obj.instance_variable_set(var, val) end deep_cloning_obj = @deep_cloning_obj @deep_cloning_obj = nil deep_cloning_obj end end 

स्रोत:

http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-list/43424

मैंने रब्बी ऑब्जेक्ट्स के गहरे क्लोन के प्रदर्शन के लिए एक मूल कार्यान्वयन बनाया है।

यह मार्शल दृष्टिकोण से लगभग 6 से 7 गुना तेज है

https://github.com/balmma/ruby-deepclone

रब्बी ऑब्जेक्ट्स की गहरी क्लोन करने के लिए एक देशी कार्यान्वयन है: ruby_deep_clone

इसे मणि के साथ स्थापित करें:

 gem install ruby_deep_clone 

उदाहरण उपयोग:

 require "deep_clone" object = SomeComplexClass.new() cloned_object = DeepClone.clone(object) 

यह लगभग 6 से 7 गुना तेजी से मार्शल दृष्टिकोण से है और घटना जमे हुए वस्तुओं के साथ काम करती है।

पटरियों में एक रिकर्सिव विधि deep_dup जो deep_dup नामक एक वस्तु की एक गहरी प्रतिलिपि वापस करती है और, deep_dup के विपरीत और clone , समग्र ऑब्जेक्ट्स (सरणियों / हैशों की सरणी / हैश) पर भी काम करती है। यह उतना आसान है जैसे:

 def deep_dup map { |it| it.deep_dup } end 

भी गहराई से बाहर की जाँच करें यह आपको अपने ऑब्जेक्ट रेखांकन की गहरी प्रतियां नियंत्रित करने की अनुमति देता है।

https://rubygems.org/gems/deep_dive

मैं सुझाव देता हूं कि आप ActiveSupport मणि का उपयोग करते हैं जो आपके देशी रूबी कोर में बहुत अधिक चीनी जोड़ता है, न कि केवल एक गहरा क्लोन विधि।

आप जोड़े गए विधियों के बारे में अधिक जानकारी के लिए दस्तावेज़ीकरण देख सकते हैं।

आप इसके लिए डुप्लिकेट मणि का उपयोग कर सकते हैं

यह एक छोटा शुद्ध शुद्धिकारक रत्न है जो कि पुनरावृत्त रूप से डुप्लिकेट ऑब्जेक्ट करने में सक्षम होता है, यह नया दोहराव के लिए भी ऑब्जेक्ट संदर्भ का डुप्लिकेट करेगा।

 require 'duplicate' duplicate('target object') 

https://rubygems.org/gems/duplicate

https://github.com/adamluzsi/duplicate.rb