Begrenzte Matrizen in Ruby

8

Wie kommt es, dass die Klasse Matrix keine Methoden hat, um ihre Vektoren und Komponenten zu bearbeiten? Es scheint, als ob alles innerhalb einer Matrix gelesen, aber nicht geschrieben werden kann. Täusche ich mich? Gibt es eine elegante Matrix -like Klasse von Drittanbietern, die es mir erlaubt, Zeilen zu löschen und absichtlich zu bearbeiten?

Bitte benachrichtige mich, wenn es keine solche Klasse gibt - ich werde aufhören zu suchen.

    
gmile 28.09.2009, 11:05
quelle

1 Antwort

5

Der Designer der Klasse Matrix muss ein Fan von unveränderlichen Datenstrukturen und funktionaler Programmierung gewesen sein. Ja, Sie haben Recht.

In jedem Fall gibt es eine einfache Lösung für das, was Sie wollen. Verwenden Sie Matrix für das, was es tun kann, und verwenden Sie dann .to_a , um ein echtes Array zu erhalten.

%Vor%

Siehe auch Numerisches Ruby Narray . Sie können die Klasse auch anpassen, um mehr Verhalten hinzuzufügen. Wenn Sie dies tun, patchen Sie bitte eine Unterklasse von Matrix. (Es gibt Ruby-Bibliotheksprojekte, die mehr Verhalten von require d-Klassen haben wollen, damit sie diese direkt modifizieren, was ihre neuen Dateien etwas giftig macht. Sie könnten so einfach eine Unterklasse oder Singleton-Klasse gepatcht haben.)

Oh, und khelll (:-) würde mir wahrscheinlich sagen, dass es für Sie wahrscheinlich einen Weg gibt zu tun, was Sie in einem funktionalen Stil möchten. Das heißt, indem Sie neue Objekte erstellen und nicht die alten ändern.

    
DigitalRoss 28.09.2009, 12:30
quelle

Tags und Links