Нужно ли проверять необязательный аргумент, прежде чем передать его другому необязательному аргументу?
У меня есть следующий вопрос относительно использования необязательного аргумента. Допустим, у меня есть следующая процедураaaa
определено в модулеm_aaa
MODULE m_aaa
SUBROUTINE aaa(a, b)
INTEGER :: a
INTEGER, OPTIONAL :: b
END SUBROUTINE
END MODULE
Теперь у меня есть вторая процедура, которая использует модульm_aaa
, Можно ли передать необязательный аргумент, как это
! Variant 1:
SUBROUTINE bbb(c, d)
USE m_aaa
INTEGER :: c
INTEGER, OPTIONAL :: d
CALL aaa(c,d)
END SUBROUTINE
или необходимо проверить наличие необязательного аргумента d следующим образом:
! Variant 2:
SUBROUTINE bbb(c, d)
USE m_aaa
INTEGER :: c
INTEGER, OPTIONAL :: d
IF (PRESENT(d)) THEN
CALL aaa(c,d)
ELSE
CALL aaa(c)
ENDIF
END SUBROUTINE
Спасибо за вашу помощь.