- 신규로 표시
- 북마크
- 구독
- 소거
- RSS 피드 구독
- 강조
- 인쇄
- 부적절한 컨텐트 신고
How can I create a interface for overload this functions?
I need just to use
CALL func(a,b)
for the all functions
SUBROUTINE func1(a,b)
INTEGER :: a,b
END SUBROUTINE
SUBROUTINE func2(a,b)
REAL :: a,b
END SUBROUTINE
I need just to use
CALL func(a,b)
for the all functions
SUBROUTINE func1(a,b)
INTEGER :: a,b
END SUBROUTINE
SUBROUTINE func2(a,b)
REAL :: a,b
END SUBROUTINE
1 솔루션
- 신규로 표시
- 북마크
- 구독
- 소거
- RSS 피드 구독
- 강조
- 인쇄
- 부적절한 컨텐트 신고
This is how it's done. Note that geneSize is not defined here, but I assume you'll take care of that.
[plain]MODULE test USE IFPORT INTERFACE getRandom MODULE PROCEDURE getRandomA MODULE PROCEDURE getRandomB MODULE PROCEDURE getRandomC END INTERFACE CONTAINS INTEGER FUNCTION getRandomA() IMPLICIT NONE getRandomA = MOD( IRAND(), geneSize-1 ) + 1 ! GENERATE RANDOM FROM 1 TO geneSize-1 END FUNCTION INTEGER FUNCTION getRandomB(max) IMPLICIT NONE INTEGER, INTENT(IN) :: max getRandomB = MOD( IRAND(), geneSize-1 ) + 1 ! GENERATE RANDOM FROM 1 TO geneSize-1 END FUNCTION INTEGER FUNCTION getRandomC(min, max) IMPLICIT NONE INTEGER, INTENT(IN) :: min, max getRandomC = MOD( IRAND(), geneSize-1 ) + 1 ! GENERATE RANDOM FROM 1 TO geneSize-1 END FUNCTION END MODULE [/plain]
링크가 복사됨
4 응답
- 신규로 표시
- 북마크
- 구독
- 소거
- RSS 피드 구독
- 강조
- 인쇄
- 부적절한 컨텐트 신고
Quoting - brunocalado
How can I create a interface for overload this functions?
I need just to use
CALL func(a,b)
for the all functions
SUBROUTINE func1(a,b)
INTEGER :: a,b
END SUBROUTINE
SUBROUTINE func2(a,b)
REAL :: a,b
END SUBROUTINE
I need just to use
CALL func(a,b)
for the all functions
SUBROUTINE func1(a,b)
INTEGER :: a,b
END SUBROUTINE
SUBROUTINE func2(a,b)
REAL :: a,b
END SUBROUTINE
You can use generic name for procedures like below:
INTERFACE func
SUBROUTINE func1(a,b)
INTEGER :: a,b
END SUBROUTINE
SUBROUTINE func2(a,b)
REAL :: a,b
END SUBROUTINE
END INTERFACE
- 신규로 표시
- 북마크
- 구독
- 소거
- RSS 피드 구독
- 강조
- 인쇄
- 부적절한 컨텐트 신고
Not working...
What's wrong?
INTERFACE getRandom
INTEGER FUNCTION getRandomA()
END FUNCTION
INTEGER FUNCTION getRandomB(max)
INTEGER, INTENT(IN) :: max
END FUNCTION
INTEGER FUNCTION getRandomC(min,max)
INTEGER, INTENT(IN) :: min, max
END FUNCTION
END INTERFACE
MODULE test
USE IFPORT
CONTAINS
INTEGER FUNCTION getRandomA()
IMPLICIT NONE
getRandomA = MOD( IRAND(), geneSize-1 ) + 1 ! GENERATE RANDOM FROM 1 TO geneSize-1
END FUNCTION
INTEGER FUNCTION getRandomB(max)
IMPLICIT NONE
INTEGER, INTENT(IN) :: max
getRandomB = MOD( IRAND(), geneSize-1 ) + 1 ! GENERATE RANDOM FROM 1 TO geneSize-1
END FUNCTION
INTEGER FUNCTION getRandomC(min, max)
IMPLICIT NONE
INTEGER, INTENT(IN) :: min, max
getRandomC = MOD( IRAND(), geneSize-1 ) + 1 ! GENERATE RANDOM FROM 1 TO geneSize-1
END FUNCTION
END MODULE
What's wrong?
INTERFACE getRandom
INTEGER FUNCTION getRandomA()
END FUNCTION
INTEGER FUNCTION getRandomB(max)
INTEGER, INTENT(IN) :: max
END FUNCTION
INTEGER FUNCTION getRandomC(min,max)
INTEGER, INTENT(IN) :: min, max
END FUNCTION
END INTERFACE
MODULE test
USE IFPORT
CONTAINS
INTEGER FUNCTION getRandomA()
IMPLICIT NONE
getRandomA = MOD( IRAND(), geneSize-1 ) + 1 ! GENERATE RANDOM FROM 1 TO geneSize-1
END FUNCTION
INTEGER FUNCTION getRandomB(max)
IMPLICIT NONE
INTEGER, INTENT(IN) :: max
getRandomB = MOD( IRAND(), geneSize-1 ) + 1 ! GENERATE RANDOM FROM 1 TO geneSize-1
END FUNCTION
INTEGER FUNCTION getRandomC(min, max)
IMPLICIT NONE
INTEGER, INTENT(IN) :: min, max
getRandomC = MOD( IRAND(), geneSize-1 ) + 1 ! GENERATE RANDOM FROM 1 TO geneSize-1
END FUNCTION
END MODULE
- 신규로 표시
- 북마크
- 구독
- 소거
- RSS 피드 구독
- 강조
- 인쇄
- 부적절한 컨텐트 신고
This is how it's done. Note that geneSize is not defined here, but I assume you'll take care of that.
[plain]MODULE test USE IFPORT INTERFACE getRandom MODULE PROCEDURE getRandomA MODULE PROCEDURE getRandomB MODULE PROCEDURE getRandomC END INTERFACE CONTAINS INTEGER FUNCTION getRandomA() IMPLICIT NONE getRandomA = MOD( IRAND(), geneSize-1 ) + 1 ! GENERATE RANDOM FROM 1 TO geneSize-1 END FUNCTION INTEGER FUNCTION getRandomB(max) IMPLICIT NONE INTEGER, INTENT(IN) :: max getRandomB = MOD( IRAND(), geneSize-1 ) + 1 ! GENERATE RANDOM FROM 1 TO geneSize-1 END FUNCTION INTEGER FUNCTION getRandomC(min, max) IMPLICIT NONE INTEGER, INTENT(IN) :: min, max getRandomC = MOD( IRAND(), geneSize-1 ) + 1 ! GENERATE RANDOM FROM 1 TO geneSize-1 END FUNCTION END MODULE [/plain]
- 신규로 표시
- 북마크
- 구독
- 소거
- RSS 피드 구독
- 강조
- 인쇄
- 부적절한 컨텐트 신고
Quoting - Steve Lionel (Intel)
This is how it's done. Note that geneSize is not defined here, but I assume you'll take care of that.
[plain]MODULE test USE IFPORT INTERFACE getRandom MODULE PROCEDURE getRandomA MODULE PROCEDURE getRandomB MODULE PROCEDURE getRandomC END INTERFACE CONTAINS INTEGER FUNCTION getRandomA() IMPLICIT NONE getRandomA = MOD( IRAND(), geneSize-1 ) + 1 ! GENERATE RANDOM FROM 1 TO geneSize-1 END FUNCTION INTEGER FUNCTION getRandomB(max) IMPLICIT NONE INTEGER, INTENT(IN) :: max getRandomB = MOD( IRAND(), geneSize-1 ) + 1 ! GENERATE RANDOM FROM 1 TO geneSize-1 END FUNCTION INTEGER FUNCTION getRandomC(min, max) IMPLICIT NONE INTEGER, INTENT(IN) :: min, max getRandomC = MOD( IRAND(), geneSize-1 ) + 1 ! GENERATE RANDOM FROM 1 TO geneSize-1 END FUNCTION END MODULE [/plain]
Worked.
Thank you.