【发布时间】:2020-05-25 05:41:48
【问题描述】:
假设我在 fortran 中使用实变量定义了一个函数 f(x)=x**2,并且我定义了两个数组 x(100) 和 y(100),其中 x(i)=real(i),比如说.
现在,要加载数组 y(100) 中函数的所有值,如果我使用内在函数(比如 sin),我只需编写
y=sin(x)
但是,要加载 f(x),我必须写
do i=1,100
y(i)=f(x(i))
enddo
如果我使用
y=f(x)
它会给出一个标量向量秩不匹配错误。 我应该以什么方式定义函数,以便它也可以像 sin 内在函数一样使用?
此外,在固有的 sin 中,我可以使用 real 和 complex 作为参数,但不能在用户定义的函数中完成,并且会给出类型不匹配错误(real complex)。 内在函数具有额外灵活性的原因是什么?如何定义我自己的函数来模仿内在函数?
【问题讨论】:
-
你应该学习基本程序。大多数内在函数都是基本的,您可以声明自己的。
-
对于问题的第二部分,您可以编写多个函数,它们的参数类型、种类或等级不同,然后是定义通用名称的接口。然后您可以通过通用名称调用,编译器将通过参数进行区分,调用特定的函数。参见,例如,stackoverflow.com/questions/2257248/…
-
投票重新打开,因为给定的副本没有回答整个问题
-
@IanBush 问题的哪一部分?通用功能和元素吸力都在那里进行了处理。我们至少应该在此处保留链接stackoverflow.com/questions/16786965/… 另外,为什么不只是另一个更多关于泛型的重复目标?
-
我可以看到如何处理不同的等级,但不是不同的数据类型 - 是的,泛型涵盖了它,但我阅读链接问题的答案的方式是它们纯粹关注多等级大小写,而不是不同的数据类型