파생 형 t_file
파이널 라이 제이션 루틴 close
을 사용하여 "Finalization"을 화면에 씁니다. t_file
유형의 인스턴스를 반환하는 함수가 있습니다.함수 리턴 값의 조기 파이널 라이즈
- 왜 마무리가
Just opened
출력 전에 발생 않습니다 이 프로그램의 출력은 내가이 개 질문이Finalization. Finalization. Just opened 2000 Done.
입니까?
- 왜 완료가 발생합니까 두 번?
제 컴파일러는 Intel (R) Visual Fortran Composer XE 2011 12.1.3526.2010입니다.
module m_file
implicit none
type t_file
integer::iu=1000
contains
final::close
end type
contains
function openFile() result(f)
implicit none
type(t_file)::f
f%iu = 2000
end function
subroutine close(this)
implicit none
type(t_file)::this
write(*,*) 'Finalization.'
end subroutine
end module
program foo
use m_file
implicit none
type(t_file)::f
f = openFile()
write(*,*) 'Just opened'
write(*,*) f%iu
write(*,*) 'Done.'
read(*,*)
end program
귀하의 설명이 매우 좋다고 생각합니다. 나는 또한 세 번째 것을 기대할 것이다. 제 생각에는 모든 경우에 필요할 수도 있으므로 디자인이 논리적이라고 생각합니다. –
불행히도 파이널 라이 제이션이 나를 위해 파일 단위를 닫고 싶었 기 때문에 사용하기 전에 장치를 닫는 동작이있었습니다. 나는 최종 결정없이 간단하게 할 수 있다고 생각합니다. – bdforbes
또 다른 메모에서 전체 프로그램의 다른 부분에서는 실제로 제대로 작동하고 조기에 완료되지 않았습니다. 나는 아직 그것을 예증 할 수 없었다. – bdforbes