R - «что такое функция внутри функции» - PullRequest
0 голосов
/ 21 января 2020

Контекст таков, что я все еще изучаю R как новичка. Могу ли я объяснить концепцию «функции внутри функции», как показано ниже?

Она работает как «in» и «out» - вы даете функцию in, выходит другая функция.

Например:

addsth<-function(xx){function(yy){xx+yy}}

  • функция xx входит, функция yy выходит (внутри функции yy, yy входит, xx + yy выходит)

addsth(7)

  • означает, что это функция 7, 7 входит, функция (yy) {xx + yy} должна прийти вне. Теперь 7 «втекает» в тело того, что должно выйти, тело говорит, что yy идет, принимает значение 7, xx + yy выходит, когда все готово для вызова, что также означает, что я должен определить xx для его работы ,

Это определение нельзя присвоить в качестве значения, например, xx = 9, но его необходимо назначить в функции, чтобы удовлетворить требование для вызова. Следовательно: теперь, поскольку addsth (7) определяет только функцию, ей нужно дать значение xx

afteradd<-addsth(7) 
afteradd(1000) 
returns 1007

большое спасибо!

1 Ответ

0 голосов
/ 21 января 2020

Я не совсем уверен, какой у вас вопрос. addsth() - если быть точным - это "закрытие". Сама функция не изменяется, но « Родительская среда замыкания - это среда выполнения функции, которая его создала » (Уикхем). Книга «Advanced R» Хэдли Уикхема объясняет это довольно хорошо. и действительно доступен онлайн: http://adv-r.had.co.nz/Functional-programming.html

Надеюсь, это немного поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...