Fortan允许元素子程序具有intent(inout)和intent(out)参数,但元素函数只允许使用intent(in)。
为什么?它只是一种风格约定,还是在调用函数和调用子例程方面有一些不同之处?
换句话说,
Elemental Integer Function FOO(i)
Integer, intent(in) :: i
...
FOO=something
End Function
和
Elemental Subroutine FOO(i, v)
Integer, intent(in) :: i
Integer, intent(out) :: v
...
v=something
End Subroutine
- FOO的这些实现是否等效?
答案 0 :(得分:6)
没有至少有一个标记为intent(out)
或intent(inout)
的参数的元素子例程没有意义,因为你必须以某种方式传递结果。函数有其返回值,子例程必须使用其参数。在Fortran 2008中,AFAIK元素程序不一定是纯粹的,但很难想象一个有用的元素子程序只能通过它的副作用。