2017-11-26 5 views
3

먼저 대답은 optional 또는 present과 같은 것이 아니라고 말하고 싶습니다.임의의 수의 인수로 Fortran 서브 루틴을 정의하는 방법은 무엇입니까?

write(*,*) ...과 같은 함수를 정의하고 싶습니다. 보시다시피, 입력 변형 수는 임의적 일 수 있습니다. optional 키워드를 사용하면 가능한 모든 입력을 정의해야합니다. 우리가 1000 개의 입력을 가질 수 있다고 가정하면 어떻게 할 수 있습니까?

+1

IMHO - 하나 또는 두 개의 선택적 매개 변수가 있으면 설계가 잘못됩니다. 동일한 타입 매개 변수의 경우 배열을 사용하는 것이 좋습니다. 즉, 'addnode ([1,2,3,4])'와 같이 파리를 만들었더라도 배열을 사용하는 것이 좋습니다. – ja72

답변

6

간단한 서브 루틴이나 포트란 인수로는 아무 것도 할 수 없습니다. 단순히 불가능합니다. 함수에 정의 된 인수 만 사용할 수 있습니다.

모든 입력 유형이 동일한 경우 모든 것을 배열에 배치해야하며 더 복잡한 파생 유형 (다형성 연결 목록 또는 이와 유사한 유형)을 만들어야합니다.

요청하는 것은 일부 언어 (예 : C 가변 함수)에 있지만 Fortran에는 존재하지 않습니다.

+2

그냥 추가하면 포트란 언어에 사용자 절차에 의해 복제되어야한다. MIN과 MAX 함수는 이름에 구애받지 않는 임의의 수의 인수를 가질 수 있지만 유사한 것을 작성하는 방법은 없습니다. –