fortran - 如何在do循环的每一步中创建子程序或函数的名称
问题描述
我的 IDE 是:
代码::Blocks 17.12 ( 使用 tdm-gcc-5.1.0-3 )
示例代码是:
program test_code
implicit none
integer :: i
integer, parameter :: nn = 3
integer :: tmp_array(nn)
character(11) :: name_tmp
character(*), parameter :: fmt_tmp = '("fun_name_",i2.2)'
do i = 1, nn
! solution - if statement
if ( i == 1 ) tmp_array(i) = fun_name_01(nn,i)
if ( i == 2 ) tmp_array(i) = fun_name_02(nn,i)
if ( i == 3 ) tmp_array(i) = fun_name_03(nn,i)
write(*,*) tmp_array(i)
! solution - avoid if statement
write( name_tmp, fmt_tmp ) i
tmp_array(i) = name_tmp(nn,i)
write(*,*) tmp_array(i)
end do
contains
function fun_name_01(nn_tmp,i_tmp) result(result_tmp)
integer, intent(in) :: nn_tmp, i_tmp
integer :: result_tmp
result_tmp = nn_tmp + i_tmp
end function fun_name_01
function fun_name_02(nn_tmp,i_tmp) result(result_tmp)
integer, intent(in) :: nn_tmp, i_tmp
integer :: result_tmp
result_tmp = nn_tmp + i_tmp
end function fun_name_02
function fun_name_03(nn_tmp,i_tmp) result(result_tmp)
integer, intent(in) :: nn_tmp, i_tmp
integer :: result_tmp
result_tmp = nn_tmp + i_tmp
end function fun_name_03
end program test_code
构建项目后,我收到此错误消息:
C:\Users\aleks\Desktop\test_code\main.f95|25|Error: Unclassifiable statement
我想要做的是避免每个具有不同名称的函数的 if 语句。有没有什么办法,首先在每个步骤中将函数名写入一个变量name_tmp
,直到一个 do 循环,然后使用该变量作为被调用函数的名称?
解决方案
推荐阅读
- java - META-INF 中的 Maven pom.xml 与 Maven 存储库中的 pom.xml
- java - 为什么这个数组中的所有元素都具有相同的值?
- redbird - redbird - 如何添加自定义标题
- upgrade - 是否可以将 Odoo 9 EE 迁移到 Odoo 10 CE?
- php - 授权标头未传入 php curl 使用 CURLOPT_HTTPHEADER
- mysql - 带有内部连接的子查询
- spring-boot - Kotlin 1.3 + Spring Boot:已经有 '...' bean 方法
- ios - ARSCN查看方向问题
- javascript - Start animation in viewport
- python - 读/写包含任意长度列表的 CSV 字典数组