S3-Objekt ändern, ohne es zurückzugeben?

Ich bin neu in der objektorientierten Programmierung in R und habe Probleme damit, eine Funktion richtig zu schreiben, die ein Objekt modifiziert.

Dieses Beispiel funktioniert:

store1 <- list(
  apples=3,
  pears=4,
  fruits=7
)
class(store1) <- "fruitstore"
print.fruitstore <- function(x) {
  paste(x$apples, "apples and", x$pears, "pears", sep=" ")
}
print(store1)
addApples <- function(x, i) {
x$apples <- x$apples + i
x$fruits <- x$apples + x$pears
return(x)
}
store1 <- addApples(store1, 5)
print(store1)

Aber ich nehme an, es sollte einen saubereren Weg geben, dies zu tun, ohne das gesamte Objekt zurückzugeben:

addApples(store1, 5)  # Preferable line...
store1 <- addApples(store1, 5)  # ...instead of this line

Wie schreibt man Modify-Funktionen in R? "<< -"?

Update: Vielen Dank für den Rosetta Stone für OOP in R. Sehr informativ. Das Problem, das ich zu lösen versuche, ist in Bezug auf den Fluss sehr komplex, sodass die Starrheit der Referenzklassen möglicherweise die Struktur hilfreich macht. Ich wünschte, ich könnte alle Antworten als Antworten akzeptieren und nicht nur eine.

Antworten auf die Frage(4)

Ihre Antwort auf die Frage