gpt4 book ai didi

module - 你如何使用 Fortran 90 模块数据

转载 作者:行者123 更新时间:2023-12-03 07:49:53 26 4
gpt4 key购买 nike

假设您有一个包含大量变量、函数和子例程的 Fortran 90 模块。在您的 USE声明,您遵循哪种约定:

  • 使用 , only : 显式声明您正在使用的变量/函数/子例程语法,例如 USE [module_name], only : variable1, variable2, ... ?
  • 插入毯子USE [module_name] ?

  • 一方面, only子句使代码更加冗长。但是,它会迫使您在代码中重复自己,并且如果您的模块包含大量变量/函数/子例程,事情就会开始变得不规则。

    这是一个例子:
    module constants
    implicit none
    real, parameter :: PI=3.14
    real, parameter :: E=2.71828183
    integer, parameter :: answer=42
    real, parameter :: earthRadiusMeters=6.38e6
    end module constants

    program test
    ! Option #1: blanket "use constants"
    ! use constants
    ! Option #2: Specify EACH variable you wish to use.
    use constants, only : PI,E,answer,earthRadiusMeters
    implicit none

    write(6,*) "Hello world. Here are some constants:"
    write(6,*) PI, &
    E, &
    answer, &
    earthRadiusInMeters
    end program test

    更新
    希望有人说“Fortran?只需用 C# 重新编码!”所以我可以否决你。

    更新

    我喜欢 Tim Whitcomb's answer ,比较 Fortran 的 USE modulename使用 Python 的 from modulename import * .之前在 Stack Overflow 上的一个话题:
  • ‘import module’ or ‘from module import’
  • In an answer ,马克·罗迪提到:

    don't use 'from module import *'. For any reasonable large set of code, if you 'import *' your will likely be cementing it into the module, unable to be removed. This is because it is difficult to determine what items used in the code are coming from 'module', making it east to get to the point where you think you don't use the import anymore but its extremely difficult to be sure.

  • What are good rules of thumb for python imports?
  • dbr's answer包含

    don't do from x import * - it makes your code very hard to understand, as you cannot easily see where a method came from (from x import *; from y import *; my_func() - where is my_func defined?)


  • 因此,我倾向于达成共识,即通过以下方式明确说明我在模块中使用的所有项目
    USE modulename, only : var1, var2, ...

    而作为 Stefano Borini mentions ,

    [if] you have a module so large that you feel compelled to add ONLY, it means that your module is too big. Split it.

    最佳答案

    我以前只是做use modulename - 然后,随着我的应用程序的增长,我发现找到函数的源代码越来越困难(不求助于 grep) - 办公室里漂浮的其他一些代码仍然使用一个每个文件一个子例程,它有它自己的一系列问题,但它使使用文本编辑器更容易浏览代码并快速跟踪您需要的内容。

    在经历了这个之后,我已经成为使用 use 的转换者。 ... only只要有可能。我也开始学Python了,和from modulename import *一样看.模块为您提供了很多很棒的东西,但我更喜欢严格控制我的全局命名空间。

    关于module - 你如何使用 Fortran 90 模块数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1240510/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com