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_Fortran90_Fortran2003 - Fatal编程技术网

Fortran中函数返回值的直接索引

Fortran中函数返回值的直接索引,fortran,fortran90,fortran2003,Fortran,Fortran90,Fortran2003,是否有可能对函数的返回值直接使用索引?大概是这样的: readStr()(2:5) 其中,readStr()是一个返回字符串或数组的函数。在许多其他语言中这是完全可能的,但是Fortran呢?我的示例中的语法当然不会编译。还有其他语法可以使用吗?没有 但是,如果它困扰您,您可以编写自己的用户定义函数和运算符来实现类似的结果,而不必将函数引用的结果存储在单独的变量中。不,这在Fortran中是不可能的。但是,您可以更改函数,以获取一个额外的索引数组,该数组确定返回哪些元素。本例说明了使用接口允许

是否有可能对函数的返回值直接使用索引?大概是这样的:

readStr()(2:5)
其中,
readStr()
是一个返回字符串或数组的函数。在许多其他语言中这是完全可能的,但是Fortran呢?我的示例中的语法当然不会编译。还有其他语法可以使用吗?

没有


但是,如果它困扰您,您可以编写自己的用户定义函数和运算符来实现类似的结果,而不必将函数引用的结果存储在单独的变量中。

不,这在Fortran中是不可能的。但是,您可以更改函数,以获取一个额外的索引数组,该数组确定返回哪些元素。本例说明了使用接口允许可选的索引规范的可能性(由于IanH的评论,大大简化了):


如果使用
associate
,可以避免声明另一个变量。它是否比临时变量更好或更清晰,必须由用户决定。结果必须存储在某个地方

 associate(str=>readStr())
   print *, str(2:5)
 end associate

对于这个可能有长字符串的特定情况,它不是很有用,但是对于其他类似情况,它可能更有用,这些情况在这里作为重复链接。

谢谢。我想知道是否有一个语法我遗漏了。在这种情况下,根据您和Alexander@Vogt的回答,我将让函数接收一个额外的“可选”索引参数,因为这可能会严重影响性能。让函数获得一个额外的索引参数是一个好方法。这个参数可以是一个“可选”参数,我认为您编写的两个函数可以合并为一个。我要试试这个。若要使用可选变量的值来确定函数结果的特征,请使结果可分配且特征延迟。@IanH谢谢!我不知道。。。我会改变我的答案。
 associate(str=>readStr())
   print *, str(2:5)
 end associate