Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
fortran:在变量在内存中*之后*标识变量的内在类型_Fortran_Introspection - Fatal编程技术网

fortran:在变量在内存中*之后*标识变量的内在类型

fortran:在变量在内存中*之后*标识变量的内在类型,fortran,introspection,Fortran,Introspection,我对fortran有点陌生,是从Python、R和SAS开始学习的。在所有这些语言中,数据类型格式都嵌入到输出函数中,但fortran需要(除其他外)为正在编写的每个变量指定一个明确的格式指示符。我希望通过利用变量内省动态构建格式字符串,让fortran告诉我数据类型以及适用的属性(种类、LEN等)。这种自省还将有助于构建普遍适用的程序子单元 在Python和R的OO世界中,这是一个微不足道的查询。例如,在Python中测试值是否为字符串只是 isinstance('foo',basestrin

我对fortran有点陌生,是从Python、R和SAS开始学习的。在所有这些语言中,数据类型格式都嵌入到输出函数中,但fortran需要(除其他外)为正在编写的每个变量指定一个明确的格式指示符。我希望通过利用变量内省动态构建格式字符串,让fortran告诉我数据类型以及适用的属性(种类、LEN等)。这种自省还将有助于构建普遍适用的程序子单元

在Python和R的OO世界中,这是一个微不足道的查询。例如,在Python中测试值是否为字符串只是

isinstance('foo',basestring)
当然还有其他方法。无论如何,我无法动摇这样一个想法,即fortran中必须存在这样一个内在的查询。到目前为止,我所看到的都是无法区分整个实数和整数的方法

其他人建议在
READ
语句中使用
IOSTAT
参数。我还没有弄明白如何利用这个语句来处理内存中已经存在的变量。(此时,我只遇到了将
READ
语句与从键盘或硬盘上的文件读取结合使用的情况。)


有人告诉我,我在什么地方疏忽了。我觉得这种能力必须存在。谢谢。

此功能不存在。您总是知道您使用的变量是什么类型的。至少是声明的类型。对于多态类型,您必须使用
选择类型
来获取实际类型,但同样,您在编译时就知道了类型

您可以使用
gw.d
g0
描述符对内部类型进行通用格式化。您不需要考虑它属于什么类型的数字。对于用户定义的派生类型,可以定义自己的I/O例程

对于非常简单的I/O,您可以使用列表定向I/O,例如

print *, x
read(*,*) x
write(*,*) x
当你可以使用它的时候有一些限制,你没有太多的行为控制


否则,我不认为这种能力显然必须存在于OO语言中。您所说的两种语言(R、Python)都是动态类型的,因此对此有更大的需求。在C++98中有
typeid()
,但大多数人不需要它。

此功能不存在。您总是知道您使用的变量是什么类型的。至少是声明的类型。对于多态类型,您必须使用
选择类型
来获取实际类型,但同样,您在编译时就知道了类型

您可以使用
gw.d
g0
描述符对内部类型进行通用格式化。您不需要考虑它属于什么类型的数字。对于用户定义的派生类型,可以定义自己的I/O例程

对于非常简单的I/O,您可以使用列表定向I/O,例如

print *, x
read(*,*) x
write(*,*) x
当你可以使用它的时候有一些限制,你没有太多的行为控制


否则,我不认为这种能力显然必须存在于OO语言中。您所说的两种语言(R、Python)都是动态类型的,因此对此有更大的需求。在C++98中有
typeid()
,但大多数人不需要它。

此功能不存在。您总是知道您使用的变量是什么类型的。至少是声明的类型。对于多态类型,您必须使用
选择类型
来获取实际类型,但同样,您在编译时就知道了类型

您可以使用
gw.d
g0
描述符对内部类型进行通用格式化。您不需要考虑它属于什么类型的数字。对于用户定义的派生类型,可以定义自己的I/O例程

对于非常简单的I/O,您可以使用列表定向I/O,例如

print *, x
read(*,*) x
write(*,*) x
当你可以使用它的时候有一些限制,你没有太多的行为控制


否则,我不认为这种能力显然必须存在于OO语言中。您所说的两种语言(R、Python)都是动态类型的,因此对此有更大的需求。在C++98中有
typeid()
,但大多数人不需要它。

此功能不存在。您总是知道您使用的变量是什么类型的。至少是声明的类型。对于多态类型,您必须使用
选择类型
来获取实际类型,但同样,您在编译时就知道了类型

您可以使用
gw.d
g0
描述符对内部类型进行通用格式化。您不需要考虑它属于什么类型的数字。对于用户定义的派生类型,可以定义自己的I/O例程

对于非常简单的I/O,您可以使用列表定向I/O,例如

print *, x
read(*,*) x
write(*,*) x
当你可以使用它的时候有一些限制,你没有太多的行为控制


否则,我不认为这种能力显然必须存在于OO语言中。您所说的两种语言(R、Python)都是动态类型的,因此对此有更大的需求。在C++98中有
typeid()
,但大多数人不需要它。

如何使用
接口为各个类型绑定例程/函数呢?
?为什么不使用g(或g0)描述符?通用接口可以工作,尽管我认为没有必要。我不知道OP在
IOSTAT
中的意思。
READ
语句有一个
IOSTAT
参数,如果在输入过程中发生错误,该参数被设置为非零的值(确切数字取决于错误和处理器)。它在这种情况下很有用,因为您可以指定信息的格式