2009-09-28 4 views
8

में सीमित मैट्रिस Matrix कक्षा में अपने वैक्टर और घटकों को संपादित करने के लिए कोई तरीका नहीं है? ऐसा लगता है जैसे मैट्रिक्स के अंदर सब कुछ पढ़ा जा सकता है लेकिन लिखा नहीं है। क्या मैं गलत हूँ? क्या कोई तीसरी पार्टी सुरुचिपूर्ण Matrix-जैसी कक्षा है जो मुझे पंक्तियों को हटाने और जानबूझकर उन्हें संपादित करने की अनुमति देगी?रूबी

कृपया मुझे सूचित करें कि कोई वर्ग नहीं है - मैं खोजना बंद कर दूंगा।

+0

क्या आप समझा सकते हैं कि आप इसके साथ क्या कर रहे हैं? – khelll

+0

मैं 'बुरी' पंक्तियों और स्तंभों (जो पूरी तरह से शून्य से जुड़ा हुआ है) की तलाश में हूं, और फिर मैं इसे हटाना चाहता हूं। मेरे पास पहले से ही कोड है, लेकिन पूरी तरह से Arrays के माध्यम से लिखा है। फिर भी मैं अधिक सटीक और सुंदर समाधान खोजने की कोशिश कर रहा हूं। – gmile

उत्तर

5

कक्षा Matrix के डिजाइनर अपरिवर्तनीय डेटा संरचनाओं और कार्यात्मक प्रोग्रामिंग का प्रशंसक होना चाहिए। हाँ आप सही हैं।

किसी भी मामले में, आप जो चाहते हैं उसके लिए एक सरल समाधान है। Matrix का उपयोग करें कि यह क्या कर सकता है, इसके बाद, वास्तविक सरणी प्राप्त करने के लिए बस .to_a का उपयोग करें।

>> Matrix.identity(2).to_a 
=> [[1, 0], [0, 1]] 

Numerical Ruby Narray भी देखें। आप अधिक व्यवहार जोड़ने के लिए कक्षा को बंदरगाह भी कर सकते हैं। यदि आप ऐसा करते हैं, तो कृपया मैट्रिक्स के उप-वर्ग को पैच करें। (रूबी लाइब्रेरी प्रोजेक्ट्स हैं जो require डी कक्षाओं से अधिक व्यवहार चाहते हैं, इसलिए वे सीधे अपनी नई फाइलें कुछ जहरीले बनाने के लिए उन्हें संशोधित करते हैं। वे आसानी से एक सबक्लास या सिंगलटन वर्ग को पैच कर सकते थे।)

ओह, और khelll (:-) शायद मुझे यह कहना चाहेंगे कि in a functional style आप जो करना चाहते हैं उसके लिए संभवतः एक तरीका है। यही है, पुराने लोगों को संशोधित करने के बजाय नई वस्तुओं को बनाकर।

+0

हम्म, ठीक है, हो सकता है कि आप अयोग्यता और कार्यात्मक प्रोग्रामिंग का उल्लेख करने के लिए – gmile

+0

+1 सही हैं, इसलिए मैंने पूछा कि आप वास्तव में क्या करना चाहते हैं, क्योंकि इसके लिए एक तरीका होना चाहिए लेकिन वर्तमान मैट्रिक्स को संशोधित किए बिना। – khelll