使用 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) )