有没有办法使用字符串调用派生类型的字段?

时间:2014-04-14 22:44:27

标签: fortran

有没有办法通过fortran中的字符串参数调用派生类型的字段?

类似......

subroutine set(car, fieldName, value)
    type(Car_T) :: car
    character*(*) :: fieldName
    character*(*) :: value

    car%[fieldName] = value
end subroutine set

我知道你可以在javascript,c#等中做这样的事情,但如果fortran允许的话,这可以帮助我获得大量的重复代码。

2 个答案:

答案 0 :(得分:2)

没有。您需要编写可执行代码(可能是SELECT CASE构造),将字符串的值映射到相关组件。

您只需为每组唯一的组件名称编写一次。

答案 1 :(得分:1)

您可以使用名单进行类似的操作,但它适用于程序已知的项目:不是新项目。

integer:: inin
real:: rere
namelist /info/ inin, rere

inin = 0 ! default
rere = 20.4 ! default
read (*, nml=info)
print *, 'inin=', inin
print *, 'rere=', rere

stop
end

在输入

&info inin=2 rere=40.0 /

或者如果您只想输入一个值

&info rere=3.162 /