gpt4 book ai didi

fortran:在变量位于内存中*之后*识别变量的内在类型

转载 作者:行者123 更新时间:2023-12-02 21:25:58 27 4
gpt4 key购买 nike

我对 Fortran 有点陌生,是从 Python、R 和 SAS 开始接触它的。在所有这些语言中,数据类型格式化都嵌入在输出函数中,但 Fortran 需要(除其他外)为每个写入的变量提供显式格式指示符。我想通过利用变量自省(introspection)来动态构建格式字符串,让 fortran 告诉我数据类型是什么,以及适用的属性(KIND、LEN 等)。这种自省(introspection)也将有助于构建普遍适用的程序子单元。

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

isinstance('foo',basestring)

当然还有其他方法。无论如何,我无法动摇这种内在的探究必须存在于 Fortran 中的想法。迄今为止,我所看到的都是无法区分整个实数值和整数的方法。

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

请有人告诉我,我在某个地方犯了严重的疏忽。我觉得这个能力必须存在。谢谢。

最佳答案

此功能不存在。您始终知道您正在使用的变量是什么类型。至少是声明的类型。对于多态类型,您必须使用 select type 来获取实际类型,但您在编译时又知道了类型。

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

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

print *, x
read(*,*) x
write(*,*) x

您何时可以使用它有一些限制,并且您对其行为没有太多控制。

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

关于fortran:在变量位于内存中*之后*识别变量的内在类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24331548/

27 4 0
文章推荐: ruby-on-rails - 用 ransack 查询 : how to get no results by default
文章推荐: r - 控制轴标签位置与轴平行的最佳方法
文章推荐: Html 5 <footer> 与
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com