嗯,我现在遇到了这个问题。我有一组(巨大的)参数,我想在矢量中组织。
当然,我可以这样做:
real, dimension(64) :: CONST
CONST(1) = 2.4
CONST(2) = 1.4
...
CONST(n) = CONST(1)*CONST(14)**CONST(7)
...
CONST(64) = ABS(CONST(18))
(注意,一些常量与其他常量有关)。
但在这种情况下,我不会在变量中拥有parameter
属性,我想拥有。
我能想到的另一个选择是使用属性parameter
,在这种情况下,我可以在变量定义期间将值赋给向量。类似的东西:
real, parameter, dimension(64) :: CONST =[2.4 , 1.4 , &
... , &
1.5412356 , &
... , &
342.5]
但是,与一些巨大的同行:
所以,
parameter
定义长向量有一种巧妙的方法(如在第一个代码中那样)感谢您的时间。
答案 0 :(得分:7)
参数的问题仅在于您无法定义依赖于自身的常量数组。但您可以定义基本数量,然后定义整个数组,包括派生数量,如下所示:
program foo
implicit none
real, dimension(2), parameter :: basic = [2.4, 1.4]
real, dimension(4), parameter :: all = [basic(1), basic(2), &
basic(1)*basic(2)**basic(1), &
abs(basic(1))]
print *, basic
print *, all
end program foo
事实上,如果你想这样做,你也可以命名基本数量:
program foo
implicit none
real, parameter :: height = 2.4, bodymass = 1.4
real, dimension(4), parameter :: all = [height, bodymass, &
height*bodymass**2, &
abs(height)]
print *, height, bodymass
print *, all
end program foo
我无法想象高度是你需要取绝对值的那种东西,但你明白我的观点。