함수를 인수로 취하는 Fortran 90 서브 루틴을 가지고 있으며이 함수의 수정 된 버전을 다른 서브 루틴으로 전달하려고합니다. 프로그램이 다음과 같이 보이길 원합니다 :다른 함수에서 동적 함수 작성
subroutine foo(f, ...)
real :: pt(2), dir(2)
interface
function f(x) result(y)
real, intent(in) :: x(2)
real :: y
end function f
end interface
pt = ...
dir = ...
!! Somehow create g(x) = f(pt + x*dir)
call bar(g)
end subroutine foo
subroutine bar(g)
interface
function g(x) result(y)
real, intent(in) :: x
real :: y
end function g
end interface
!! Do stuff with g
end subroutine bar
'g'는 함수가 아닌 일반 변수 만 사용해야 할 때 비슷한 일을했습니다. 이 경우 전역 변수를 사용하여 전역 함수로 만들고 'foo'에서 전역 변수에 할당했습니다. 그러나 'f'를 전역으로 설정하거나 전역 기능에 할당하는 방법을 찾을 수 없습니다.
아무도 아이디어를 가지고 어떻게해야합니까? 솔루션은 원하는대로 해킹 할 수 있습니다.
감사하지만, 포트란 90 일 것인가? 당신이 사용한 많은 키워드는 저에게 새롭다; 특히 저는 2003 년 90 세가 아니라 'procedure'에 대한 언급 만 찾을 수있었습니다. –