Итак, всего в программировании существуют три способа получения данных извне у методов, функций или операторов. На картинке эти способы представлены слева направо!
1. Первый способ на картинке обозначает копирование (полное, частичное, нулевое) оранжевых объектов извне на входе при вызове внутреннего метода, при этом созданные внутри копии оранжевых объектов будут существовать до конца работы внутреннего метода. Оранжевые объекты извне передаются (копируются) во внутренний метод в параметрах в круглых скобках (Java C# C++) при вызове метода.
2. Второй способ на картинке обозначает передачу напрямую оранжевых объектов, созданных во внешнем методе выше вызова по коду внутреннего метода, при этом внутри внутреннего метода обычно создается второе временное имя для закинутых напрямую оранжевых объектов. Вторые временные имена внутреннего метода работают до конца его работы, затем при выходе из него оранжевая переменная остается с первоначальным именем до конца работы внешнего метода.
3. Третий способ на картинке обозначает передачу напрямую оранжевых объектов, созданных за пределами внешнего метода в глобальном пространстве. При этом внутри внутреннего метода к оранжевым внешним объектам имеется доступ по их глобальным именам, именам их классов или пространств имен. Если объекты в глобальном пространстве спрятаны приватными модификаторами или закрыты для доступа к ним из внешних классов, то тогда к ним нельзя получить доступ в методах по их именам.
Три способа слева направо захвата внешних данных в функцию вы можете увидеть на данной картинке по ссылке в Telegraph:
Благодарю вас, до встречи в следующих статьях!