Я хочу создать список (в основном объект с пользовательским классом), который содержит базу данных в одном из элементов и функцию в другом элементе. После инициализации списка я хочу иметь возможность вызвать функцию и изменить ее элемент, содержащий базу данных. Вот пример того, что я имею в видуИзменение элемента списка из другого элемента из того же списка
newObject<- function(dataSet){
rtrn <- list()
rtrn$dataHolder <- dataSet
rtrn$addition <- function(numberToAdd){
rtrn$dataHolder <- rtrn$dataHolder + numberToAdd
}
class(rtrn) <- "customClass"
return(rtrn)
}
x <- newObject(c(1,2,3))
x$addition(1)
Вызов метода сложения() фактически не изменять элемент dataHolder. Я пробовал < < - как оператор присваивания (так как я изменяю переменную за пределами функции), но это, похоже, не работает
Я не понимаю вас, логика. Почему бы не подумать в терминах fung prog/математической функции, где вы просто определяете функцию, принимающую в качестве аргумента список, поле, число и возвращаемое это поле списка, увеличивающееся на число? –
Кстати, очень плохо назвать функцию «newObject». Используйте скорее глагол/действие, которые четко описывают действие вашей функции. –
Благодарим вас за отзыв. «newObject» предназначен только для этого примера, предназначенный для использования в качестве конструктора объекта. Что касается предложения по функциональному программированию, то это то, что я сейчас использую, но мне просто интересно, могу ли я содержать методы внутри объекта - я думал, что это облегчит чтение, если у меня есть несколько объектов, содержащих разные базы данных и все, что мне нужно сделать для обработки этих наборов данных, - это просто вызов метода, уже сохраненного в этих объектах. – Grittly