Kann man eine Referenz auf die Instanz einer Datenstruktur erstellen?

2 Ansichten (letzte 30 Tage)
Elisabeth
Elisabeth am 10 Mai 2024
Kommentiert: Harald am 16 Mai 2024
Hallo,
ich habe gesehen, dass man Klassen mit
classdef myClass
properties
...
end
methods
...
end
end
definieren kann. Andererseits habe ich in Verbindung mit dem Datentyp
struct()
keine stabile Möglichkeit gefunden um mit Pointern zu arbeiten. Wie geht man vor wenn man größere Datenmengen verwalten/verarbeiten möchte und Kopieren nicht in Frage kommt. Wenn man mit der Datenstruktur struct() arbeitet und diese verschachtelt wird der Zugriff über Indizierung ziemlich unübersichtlich. Andererseits gibt es die Möglichkeit scheinbar echte Klassen zu erzeugen.
Gibt es eine Art Referenz auf Objekte oder Strukturen?
Vielen Dank!
Lisa

Antworten (1)

Harald
Harald am 12 Mai 2024
Hallo Lisa,
eine Übersicht, wie MATLAB unnötige Kopien von Daten vermeidet und was du als Anwenderin dazu beitragen kannst, findest du hier:
Objekte haben standardmäßig ein Pass-By-Value Verhalten. Wenn du Pass-By-Reference haben möchtest, kannst du von der Handle-Klasse vererben.
Bezüglich Strukturen wäre es gut, wenn du "keine stabile Möglichkeit gefunden um mit Pointern zu arbeiten" näher ausführen könntest: was hast du versucht, und welche Probleme sind dabei aufgetreten?
Viele Grüße,
Harald
  2 Kommentare
Elisabeth
Elisabeth am 15 Mai 2024
Hallo Harald,
vielen Dank für den Link. Ich habe verstanden, dass Pass-By-Value der Standard ist. Ich versuche zu verstehen wo die Grenze für den Einsatz einer verschachtelten Struktur in Matlab liegt und ab wann es besser ist mit Klassen zu arbeiten. Ich sehe mir die Handle-Klasse an. Danke für diesen Hinweis.
Viele Grüße
Lisa
Harald
Harald am 16 Mai 2024
Hallo,
prinzipiell ist beides möglich.
Ein Vorteil bei Klassen ist, dass du bei den Properties Datentyp und weitere Attribute festlegen kannst und so sichergestellt wird, dass die Properties mit sinnvollen Werten belegt werden.
Zudem wird bei Klassen die Funktionalität klar dem Datentyp zugeordnet.
Eine erste Einführung zu Klassen in MATLAB bietet das kostenfreie Onramp. Für ein tieferes Verständnis der objektorientierten Programmierung in MATLAB würde ich diese Schulung empfehlen.
Viele Grüße,
Harald

Melden Sie sich an, um zu kommentieren.

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!