我经常使用名单功能来灵活地将参数列表输入到 FORTRAN 程序中,但是有一天,当我搜索以提醒自己它们的用途时,我遇到了这样的说法:
它(f77 的名单语言扩展)现已包含在 Fortran 90 语言中。然而,NAMELIST 是一个设计不佳的功能,应尽可能避免。
我只是想知道
Metcalf 等人的经典著作《现代 Fortran 解释》中没有提及名单效率低下和糟糕的设计。 https://books.google.com/books?id=V7UVDAAAQBAJ&lpg=PP1&pg=PA197#v=onepage&q=namelist%20I/O&f=false 相反,我相信名单 - 特别是在 Fortran 2003 和 2008 中添加的增强功能 - 是非常有用且灵活的数据 I/O 方法。
我不认为名单本身有什么不好,但它们确实有一些局限性。在我正在从事的一个项目中,事实证明,名单的结构必须在声明名单时已知,这一点相当大。我发现这段落可能比我解释得更好。就我而言,必须从对参数的嵌套子列表的了解为零的地方(应用程序驱动程序)读取参数;它实际上对有多少子列表一无所知(每个应用程序组件有一个子列表,组件的数量/类型是运行时选项)。我高度重视代码的划分,因此我希望应用程序的驱动程序与每个组件的内部结构(例如参数的数量/名称/类型)无关。这使得使用名单几乎不可能。