如果您查看内在函数
是否有任何方法可以在Fortran中实现自己的函数,以使函数返回值的类型或更好的说是种类取决于参数?我尝试过类似这样的代码:
但是它会出现错误:
现在我知道我可以使用过程重载,使得相同的名称与不同的过程相关联,具体取决于参数的类型。但是我想知道返回值的类型是否可以取决于参数的值。
CEILING
的定义,它有一个可选参数KIND
,可以用于强制返回值的整数类型。是否有任何方法可以在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
现在我知道我可以使用过程重载,使得相同的名称与不同的过程相关联,具体取决于参数的类型。但是我想知道返回值的类型是否可以取决于参数的值。