मैं एक समारोह के लिए एक वास्तविक तर्क के रूप में एक सामान्य प्रक्रिया पारित करने के लिए प्रयास कर रहा हूँ:वास्तविक तर्क के रूप में एक समारोह के लिए एक क्रियाशील प्रक्रिया पासिंग
module mymod
implicit none
interface func
module procedure :: func1
module procedure :: func2
endinterface func
contains
real function func1(x)
real,intent(in) :: x
func1 = 2*x
endfunction func1
real function func2(x,y)
real,intent(in) :: x
real,intent(in) :: y
func2 = 2*x + 3*y
endfunction func2
real function func3(func,x,y)
interface
real function func(x,y)
real,intent(in) :: x
real,intent(in) :: y
endfunction func
endinterface
real,intent(in) :: x
real,intent(in) :: y
func3 = func(x,y)
endfunction func3
endmodule mymod
program myprogram
use mymod
implicit none
write(*,*)func3(func,2.,3.)
endprogram myprogram
gfortran 6.2.0 नोट है कि मैं ऐसा नहीं कर सकते:
test.f90:43:16:
write(*,*)func3(func,2.,3.)
1
Error: GENERIC procedure ‘func’ is not allowed as an actual argument at (1)
इसी तरह, ifort 17 के साथ:
test.f90(39): error #8164: A generic interface name shall not be used as an actual argument. [FUNC]
write(*,*)func3(func,2.,3.)
----------------^
test.f90(39): error #6637: When a dummy argument is a function, the corresponding actual argument must also be a function. [FUNC]
write(*,*)func3(func,2.,3.)
----------------^
compilation aborted for test.f90 (code 1)
मैं जीन पर 2008 स्टैंडर्ड अनुभाग के माध्यम से पढ़ रहा हूँ अमीर इंटरफेस और मुझे इस तरह के प्रतिबंध नहीं मिल रहे हैं। मैं एक कारण के बारे में भी नहीं सोच सकता कि क्यों संकलक संकलन समय पर सामान्य इंटरफ़ेस को हल करने में सक्षम नहीं होगा। मेरा आंत मुझे बता रहा है कि यह करने योग्य होना चाहिए, लेकिन मेरे पास सही दृष्टिकोण नहीं हो सकता है। क्या आप ऐसा करने के लिए मानक-अनुरूप तरीके से जानते हैं?
हमेशा स्पष्ट और बिंदु, धन्यवाद करने के लिए अर्जित करता है। – milancurcic
मैं टिप्पणी करूंगा कि विशिष्ट कार्यों का उपयोग फोरट्रान 2015 में गैर-मानक बन जाएगा। उस बिंदु पर एक आंतरिक तर्क को प्रक्रिया तर्क के रूप में पारित करने का कोई तरीका नहीं होगा और मानक-अनुरूप रहने के लिए रैपर विधि का उपयोग करना होगा। (मुझे यह भी ध्यान है कि फोरट्रान 95 के बाद से इंट्रिनिक्स के लिए कोई नया विशिष्ट नाम नहीं जोड़ा गया है।) –