function - 具有函数参数的 Fortran 函数,这些函数本身具有不同数量的参数
问题描述
我想编写一个将另一个函数作为输入的 Fortran 函数。我知道我可以通过界面来做到这一点。从现在开始,我将这两个不同的函数称为“函数”和“接口函数”。
想象一下,我的函数只改变了接口函数的第一个参数。例如,它可能是一个正在集成的集成例程x
,它是我将传递给它的任何接口函数的第一个参数。
我希望能够将带有任意数量参数的接口函数传递给第一个函数,并且能够以某种方式为接口函数所需的任何其他参数设置固定常量值。我想要的东西类型的一个最小示例如下:
PROGRAM test
IMPLICIT NONE
!This works
WRITE(*,*) add(g)
!This does not work
WRITE(*,*) add(h(:,0.))
CONTAINS
REAL FUNCTION add(f)
IMPLICIT NONE
INTERFACE
REAL FUNCTION f(x)
REAL, INTENT(IN) :: x
END FUNCTION f
END INTERFACE
add=f(1.)+f(2.)
END FUNCTION add
REAL FUNCTION g(x)
IMPLICIT NONE
REAL, INTENT(IN) :: x
g=x**2
END FUNCTION g
REAL FUNCTION h(x,y)
IMPLICIT NONE
REAL, INTENT(IN) :: x, y
h=x**2+y**2
END FUNCTION h
END PROGRAM test
add
上面的代码在主程序中的第二次调用将无法编译,并在参数列表中抱怨语法错误。但是,如果没有这条线,它可以正常工作。
有什么方法可以调整我的代码,以便我可以add
使用输入h
函数以及输入函数调用我的g
函数?
请注意,我为此考虑的实际应用程序相对复杂,并且涉及“接口函数”,在其参数列表中需要各种不同的类型。
解决方案
推荐阅读
- java - JavaFX - 在 GUI 中显示图像
- jquery - 将css类插入父元素
- python - 如何使用 matplotlib 修复注释问题
- excel - 编译错误“未定义用户定义类型”
- node.js - Axios 发布失败,403 CSRF 令牌验证失败,但在 Postman 中工作正常
- c# - 在 C# 中带有 expando 对象的字段'params'
- docker - 为什么 Docker 找不到现有的包?
- python - Python中整数的Hashtag
- php - php max_execution_time 在 laravel 应用程序中不起作用
- android - 当浮动标签被提升时如何在textinputlayout上添加信息图标