我有一个fortran函数来改变字符串的大小写
Function chcase (a) Result (b)
Character (Len=:), Allocatable :: b
Character (Len=*), Intent (In) :: a
Create string s, upper case of string a
...
b = Trim (s)
End Function chcase
我希望能够通过调用
来使用相同的字符串更改大小写s = chcase (s)
我应该更好地使用
Character (Len=*), Intent (InOut) :: a
使用Intent(In)我仍然得到正确的结果
答案 0 :(得分:2)
就语言规范而言,对于语法s = chcase(s)
,函数引用chcase(s)
的评估在结果值分配给s
之前完成。
要使用的适当的INTENT规范是在执行相关过程的生命周期中反映伪参数的性质的规范。如果INTENT(IN)
函数的省略内容合理,则可能chcase
。{/ p>
当赋值发生时,函数的伪参数的意图规范是无关紧要的 - 函数已经完成执行并且伪参数不再存在。
(Fortran 77在字符变量的自我赋值方面有限制,但今天这些并不相关 - Fortran 77也没有INTENT规范或ALLOCATABLE函数结果。)