小编Leo*_*art的帖子

是否有必要在将可选参数传递给另一个可选参数之前检查它?

关于可选参数的用法,我有以下问题.假设我aaa在模块中定义了以下例程m_aaa

MODULE m_aaa
SUBROUTINE aaa(a, b)
  INTEGER           :: a
  INTEGER, OPTIONAL :: b
END SUBROUTINE
END MODULE
Run Code Online (Sandbox Code Playgroud)

现在我有一个使用该模块的第二个例程m_aaa.是否可以像这样传递可选参数

! Variant 1:
SUBROUTINE bbb(c, d)
  USE m_aaa 
  INTEGER           :: c
  INTEGER, OPTIONAL :: d
  CALL aaa(c,d)
END SUBROUTINE  
Run Code Online (Sandbox Code Playgroud)

或者是否有必要检查是否存在可选参数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  
Run Code Online (Sandbox Code Playgroud)

谢谢你的帮助.

fortran optional-arguments

7
推荐指数
1
解决办法
369
查看次数

标签 统计

fortran ×1

optional-arguments ×1