我想要一个函数接口,根据数组参数的大小来解决使用哪个特定过程。例如,我可以使用一个程序来处理具有一个过程的具有少于或精确N个元素的向量,而用另一个过程处理较长的向量。据我所知,Fortran只使用参数的类型,等级和关键字来解析。这是为什么?难道编译器不够智能,无法区分不同大小的数组,或者编写那样做的编译器本身是不可能的?
是否有解决方法来实现所需的功能?我当然知道我可以编写一个带有if子句的子例程来排序用于哪个数组大小的过程。难道不会花费更多的CPU时间吗?
答案 0 :(得分:3)
已经设计了特定程序的解决方案,以便可以在编译时完成。在一般情况下,数组的大小是运行时概念。
如果您在编译时知道某个特定过程更适合某些输入,那么您可以直接调用该特定过程。
否则使用IF来测试和分支大小(如果语言具有这种魔法,无论如何它都将在幕后进行)。无论如何,该测试和分支可能比在运行时调用reshape快得多。