有没有办法通过fortran中的字符串参数调用派生类型的字段?
类似......
subroutine set(car, fieldName, value)
type(Car_T) :: car
character*(*) :: fieldName
character*(*) :: value
car%[fieldName] = value
end subroutine set
我知道你可以在javascript,c#等中做这样的事情,但如果fortran允许的话,这可以帮助我获得大量的重复代码。
答案 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 /