Это скорее расширенный комментарий, чем ответ, я не на 100% уверен, о чем спрашивает OP.
Сущности модуля доступны в любой области, которая включает оператор use
; в этом примере это будет use mathstuffmodule
.
Возможность манипулирования сущностями, определенными в другой, в одной области видимости называется использование-ассоциация. Все дело в связывании сущностей в (возможно, сложных и длинных) программах с помощью умного использования операторов use
.
При желании оператор use
может ограничивать связанные сущности модуля, используя предложение only
, или он может переименовывать сущности модуля, чтобы они были известны под другим именем в области использования.
Для простоты думайте на этом этапе только об использовании программными модулями. Если программа включает в себя оператор use
, то любые сущности модуля находятся в области видимости всякий раз, когда любая программная сущность находится в области видимости. Сущности программы (и сущности, связанные с использованием в программе) обычно находятся в области видимости на протяжении всего выполнения программы, но могут маскироваться в подобластях.
Я бы не стал называть answer
переменную, я бы назвал ее членом производного типа mathstufftype
. Если объект этого типа объявлен в области программы, то к этому члену можно получить доступ с помощью термина вроде entity%answer
.
Я бы также не стал называть addthis
переменную, это фиктивное имя аргумента для подпрограммы mathstuff1
. Было бы ошибкой использовать имя addthis
вне подпрограммы для ссылки на этот аргумент. (Можно было бы объявить переменную с именем addthis
в другой области, если вы хотите запутать ситуацию.)
По отдельности нет ничего, называемого answer
, и ничего, называемого addthis
, что может use
d клиентом модуля и использоваться как переменная.
Вероятно, также бесполезно думать о передаче данных между модулями. Если программа использует два модуля, то она имеет доступ к любым сущностям, определенным в любом из них, и может использовать, скажем, переменную, определенную в одном модуле, в качестве параметра подпрограммы, определенной в другом. Также возможно от модуля A до use
модуля B; тогда (а) код в B может манипулировать объектами, связанными с использованием из A, и (b) любым другим модулем (или программой), который use
s B также получает (транзитивно) доступ к объектам в A.
person
High Performance Mark
schedule
15.07.2019