我想从文本文件中读取数字。那些可以是标量或数组。
所以要么我打电话
real, dimension(2) :: test
call self%ReadRealToVariable('(2F10.0)',test)
或
real :: test
call self%ReadRealToVariable('(F10.0)',test)
导入功能类似于
subroutine ReadRealToVariable(self,Format,VarOut)
implicit none
! Declaring Part
class(FileImporter) :: self
real, dimension(:), intent(out) :: VarOut
character(len=*), intent(in) :: Format
real, dimension(size(VarOut)) :: Value
! Executing Part
call self%ReadValueToVariable(Format,Value)
end subroutine ReadRealToVariable
问题是,当我尝试导入标量时,我得到标量和等级(1)之间的维度不匹配。我完全理解为什么会出现这个问题。现在的问题是如何处理它:
有没有办法灵活地将变量分配给标量或数组?
或者我应该将所有标量初始化为real, dimension(1) :: test
?
答案 0 :(得分:2)
为了回答人们可以看到的问题......
1)不,如果传递标量,单个例程将无法分配标量,如果传递了数组,则无法分配数组。可以将不同的例程包装在通用接口后面并使其显示,就像单个过程表现为OP所希望的那样。这可能就足够了。 OP似乎已经解决了这个问题,关于通用接口,可能还有其他几个问题,所以我不会在这里写更多关于这个主题的内容。
2)为了编写例程来读取文件中的值,人们当然可以将标量视为大小为1的排名1数组。是否有人希望在整个代码库中传播这一点我不确定。另一方面,我可以看到大小为1的排名1数组对于大小为0的数组有用的方式很有用,例如处理没有复杂条件的边缘情况。