gpt4 book ai didi

function - 在 `function` 语句中定义结果数据类型

转载 作者:行者123 更新时间:2023-12-04 17:49:57 25 4
gpt4 key购买 nike

好吧,让我先说一下我为什么要这样做。我经常用 C/C++ 编写代码,所以对我来说定义如下函数是很自然的:

vector<int> TestFunct (int a, int b){
<some code here>

return <result>;}

现在我正在学习 Fortran,所以我声明了这样的函数:
function TestFunc(a,b)
integer, dimension(:) :: TestFunc
integer :: a
integer :: b
<some code here>
endfunction TestFunc

但是最近才知道结果的数据类型可以在函数语句中定义,比如: <data_type> function TestFunc(a,b) ,这对我来说更自然,因为我已经习惯了类似的 C++ 声明。

问题是,当我试图定义一个向量(实际上是 integer, dimension(:) ,严格来说)作为结果数据类型时,我有 ifort错误 #5082 (我将在接下来的几行中详细说明)。

在一个例子中,对于代码:
real, dimension(:) function TestFunc(a,b)
integer, intent(in) :: a
integer, intent(in) :: b

<more code here>

endfunction Testfunc

我得到输出:
main.f90(23): error #5082: Syntax error, found ',' when expecting one of: ( * ) ( :: %FILL , TYPE INTEGER REAL COMPLEX BYTE CHARACTER CLASS DOUBLE ...
real, dimension(:) function TestFunc(a, b)
----^
main.f90(23): error #5082: Syntax error, found IDENTIFIER 'FUNCTION' when expecting one of: * :: , <END-OF-STATEMENT> ; [ / = => WITH
real, dimension(:,:) function TestFunc(a, b)
---------------------^

希望我已经清楚地解释了我的问题。

编辑:因此,为了总结我刚刚在一个问题中所说的内容:如何在函数语句中声明一个向量(即: integer, dimension(:) )作为返回数据类型?

最佳答案

您可以在 function 之前定义返回类型符号,但它是有限的。这是一种较旧的方式,仅适用于较简单的情况。规则有些晦涩,我记不清了,但这是标准所说的:

函数子程序定义的函数结果的类型和类型参数(如果有)可能是
由 FUNCTION 语句中的类型规范或出现的结果变量的名称指定
在函数子程序规范部分的类型声明语句中。它们不应被指定
双向。如果没有以任何方式指定它们,则它们由 eect 内的隐式类型规则确定
函数子程序。 如果函数结果是数组、可分配的或指针,则应由
函数体内结果变量名称的规范。
功能规范
结果属性、虚拟参数属性的规范以及过程标题中的信息
共同定义函数的特性(12.3.1)。

关于function - 在 `function` 语句中定义结果数据类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19184159/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com