如果您查看內部函數CEILING
的定義,則它具有可選參數KIND
,該參數可用於強制返回值的整數種類。返回類型取決於參數的Fortran函數
是否有任何方法可以在Fortran中實現我自己的函數,使函數的返回值的類型或更好取決於參數?我已經試過這樣的事情:
program test_kind
use iso_fortran_env
implicit none
integer(kind=int32) :: a
print*, kind(a)
print*, kind(kt(int16))
print*, kind(kt(int32))
contains
function kt(kind)
implicit none
integer, intent(in) :: kind
integer(kind=kind) :: kt
kt = 100
end function kt
end program test_kind
但它失敗,錯誤:
test_kind.f90:12:21:
integer(kind=kind) :: kt
1
Error: Parameter ‘kind’ at (1) has not been declared or is a variable,
which does not reduce to a constant expression
現在我知道我可以使用過程重載具有取決於類型不同的程序相關聯的同名的論據。但我在問,返回值的類型是否取決於參數的值。
它必須是一個功能嗎?子程序的可選參數(每種)都可以工作嗎? – Ross
@Ross我沒有一個特定的應用程序,我現在需要在這個時間點。 – chw21