使用 Fortran 数组构造函数 func((/array(i)/)) 的作用是什么
What is the action of the use of a Fortran array constructor func((/array(i)/))
我正在审查包含以下形式的语句的 Fortran (95/2003) 代码
do j=1,size(array)
res(j) = func((/array(j)/))
end do
其中 func 是一个 function
,它将大小为 size(array)
的单个一维数组作为参数。我知道 (/ ... /)
是一个数组构造函数。但是 func((/array(j)/))
语句的目的是什么?请注意,示例已减少诅咒,我希望我没有删除相关部分。
正如您所提到的,func
是一些接受数组作为输入和 returns 标量的函数。
array(j)
只是一个标量,因此您不能将其直接传递给 func
。因此,您通过 (/ array(j) /)
构造了一个维度为 1 的数组,并将该临时数组传递给您的函数。
正如 agentp 所指出的[谢谢!],以下还将传递一个一维数组(准确地说,是一个长度为 1 的数组切片):
func( array(j:j) )
我正在审查包含以下形式的语句的 Fortran (95/2003) 代码
do j=1,size(array)
res(j) = func((/array(j)/))
end do
其中 func 是一个 function
,它将大小为 size(array)
的单个一维数组作为参数。我知道 (/ ... /)
是一个数组构造函数。但是 func((/array(j)/))
语句的目的是什么?请注意,示例已减少诅咒,我希望我没有删除相关部分。
正如您所提到的,func
是一些接受数组作为输入和 returns 标量的函数。
array(j)
只是一个标量,因此您不能将其直接传递给 func
。因此,您通过 (/ array(j) /)
构造了一个维度为 1 的数组,并将该临时数组传递给您的函数。
正如 agentp 所指出的[谢谢!],以下还将传递一个一维数组(准确地说,是一个长度为 1 的数组切片):
func( array(j:j) )