函数返回改变其输入

时间:2016-04-29 01:35:39

标签: function fortran

我有一个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)我仍然得到正确的结果

1 个答案:

答案 0 :(得分:2)

就语言规范而言,对于语法s = chcase(s),函数引用chcase(s)的评估在结果值分配给s之前完成。

要使用的适当的INTENT规范是在执行相关过程的生命周期中反映伪参数的性质的规范。如果INTENT(IN)函数的省略内容合理,则可能chcase。{/ p>

当赋值发生时,函数的伪参数的意图规范是无关紧要的 - 函数已经完成执行并且伪参数不再存在。

(Fortran 77在字符变量的自我赋值方面有限制,但今天这些并不相关 - Fortran 77也没有INTENT规范或ALLOCATABLE函数结果。)