Ich habe einen Vektor von jedem, sagen A = Any[[1,2],[3,4]]
. Dann möchte ich ein neues Array erstellen, sagen wir C::Vector{Any}
basierend auf meinen Elementen in A
, aber ohne tatsächlich zu ändern A
. Ich habe versucht, eine Kopie zu erstellen, B = copy(A)
, und Änderungen an Elementen in B
vorzunehmen, um dann zu C
hinzuzufügen, so dass sich A
nicht ändert, aber A
ändert sich ständig. Jetzt könnten Sie mich bitten, tiefe Kopie zu verwenden, aber das möchte ich nicht, weil ich immer noch möchte, dass die unveränderten Elemente in C
denen in A
entsprechen, dh A[1] == C[1]
sollte true
zurückgeben, wenn ich das erste Element von A
in C
ohne hinzufüge Änderungen vornehmen. C
könnte beispielsweise Any[[1,2],[3,4,5]]
sein.Wie ändert man den Vektor des benutzerdefinierten Typs, ohne den ursprünglichen Vektor zu ändern?
Also wie erstelle ich C
ohne Änderung A
überhaupt, und auch sicherstellen, dass die Gleichheit der unveränderten Elemente halten?
Ich verstehe nicht. Wenn Sie 'C = deepcopy (A)' verwenden, dann haben unveränderte Elemente in 'C' * eine Gleichheit mit entsprechenden Elementen in' A'. Zum Beispiel: 'A = Beliebig [[1,2], [3,4]]; C = Tiefenkopie (A); C [2] = [4,5]; A [1] == C [1] '<- gibt' true' zurück. –
Ich stimme zu, dass diese Anfrage sich widerspricht. Möchten Sie, dass Änderungen an den Elementen gleich bleiben oder nicht? Kannst du die Frage klären? – StefanKarpinski
Entschuldigung, wenn meine Frage verwirrend war. Ich habe es jetzt funktioniert. Vielen Dank für Ihre Antwort! – Sapna