创建单独的模块过程时,在什么情况下您会在子模块中使用 "module procedure"?
In what situation would you use "module procedure" in a submodule when creating separate module procedures?
我了解 Fortran 2008+ 中子模块的一般好处,但我无法理解其中一个语法选项的好处。
如果我想创建单独的模块过程(过程的主体在子模块中),我需要在父模块中创建一个接口。该接口必须包含子例程或函数标识符以及参数列表和意图。这一切都是有道理的。
然后子模块包含过程的实现,但可以选择语法:我可以重复子例程或函数的签名,或者,我可以简单地使用 [=22 之后的接口名称=] 我正要打出一个例子,但 fortran wiki 完美地展示了它。
我的问题是:使用 "module procedure" 而不是 "module function" 或 "module subroutine" 的替代语法有什么好处,即过程类型、参数和意图是 没有在子模块文件中重复?看起来这只会使代码维护复杂化,因为现在需要打开两个文件才能理解子例程或函数。我在这里是否遗漏了一些隐藏的好处(除了节省 copy/paste)?
好处会在代码的生命周期后期出现。如果您必须更改函数的签名,则只需更改一个位置。
我了解 Fortran 2008+ 中子模块的一般好处,但我无法理解其中一个语法选项的好处。
如果我想创建单独的模块过程(过程的主体在子模块中),我需要在父模块中创建一个接口。该接口必须包含子例程或函数标识符以及参数列表和意图。这一切都是有道理的。
然后子模块包含过程的实现,但可以选择语法:我可以重复子例程或函数的签名,或者,我可以简单地使用 [=22 之后的接口名称=] 我正要打出一个例子,但 fortran wiki 完美地展示了它。
我的问题是:使用 "module procedure" 而不是 "module function" 或 "module subroutine" 的替代语法有什么好处,即过程类型、参数和意图是 没有在子模块文件中重复?看起来这只会使代码维护复杂化,因为现在需要打开两个文件才能理解子例程或函数。我在这里是否遗漏了一些隐藏的好处(除了节省 copy/paste)?
好处会在代码的生命周期后期出现。如果您必须更改函数的签名,则只需更改一个位置。