Как отмечал Берги, функции стрелок не имеют своей собственной переменной arguments
.
Однако, если вы хотите захватить args для своей функции стрелки, вы можете просто использовать параметр останова
const myFunc = (...args) =>
console.log ("arguments", args)
myFunc (1, 2, 3)
// arguments [1, 2, 3]
Параметры останова могут быть объединены с другими позиционными параметрами, но всегда должны быть включены как last
const myFunc = (a, b, c, ...rest) =>
console.log (a, b, c, rest)
myFunc (1, 2, 3, 4, 5, 6, 7)
// 1 2 3 [ 4, 5, 6, 7 ]
Если вы допустили ошибку записи параметра отдыха в любой другой позиции, вы получите сообщение об ошибке
const myFunc = (...rest, a, b, c) =>
console.log (a, b, c, rest)
myFunc (1, 2, 3, 4, 5, 6, 7)
// Error: Rest parameter must be last formal parameter
Вы не упомянули, как вы компилируете свой код, но вот несколько общих способов включить несколько исходных файлов в один исполняемый файл. Вам не нужно включать файлы, вы можете просто скомпилировать их отдельно и связать их вместе. Написание Makefile для этого рекомендуется, и вы можете найти множество примеров в другом месте.
Чтобы скомпилировать несколько файлов в один исполняемый файл, вам нужно всего лишь перечислить их все при компиляции
gfortran -o output programA.f90 programB.f90 programC.90 mainprogram.f90
Если вы не хотите компилировать их все вместе или перекомпилировать при сборке, вы можете скомпилировать отдельные объекты, например
gfortran -c -o programA.o programA.f90
gfortran -c -o programB.o programB.f90
gfortran -c -o programC.o programC.f90
, а затем ссылку как
gfortran -o output mainprogram.f90 programA.o programB.o programC.o
Если вы вместо этого пытаетесь использовать библиотеки и хотите, чтобы программа AC была в автономной библиотеке, вы можете сначала скомпилировать объекты, как указано выше, затем
ar rcs libABC.a programA.o programB.o programC.o
, а затем скомпилировать свою основную программу как
gfortran -o output mainprogram.f90 libABC.a
Если вы не используете модули, вы будете нести ответственность за то, чтобы ваши вызовы внешним подпрограммам соответствовали объявленному интерфейсу во внешнем файле. Чтобы быть в безопасности и проблемы с компилятором с несогласованными аргументами, вы можете объявить явные интерфейсы в своей программе или поместить внешний код в модули и use
эти модули в основную программу.