我们如何在Fortran 90中编写布尔函数。就像我正在编写一个堆栈并想创建一个布尔函数isEmpty,它将返回一个true / false。
我试着找一个这样的例子,但实际上找不到一个。有人会告诉我一个如何做到这一点的例子。
答案 0 :(得分:4)
以下是使用不同语法返回逻辑值的函数的三个示例。您可以选择是否定义与函数名称不同的RESULT变量。我在代码中使用了第一种语法。
module foo
implicit none
contains
!
function even(i) result(tf)
integer, intent(in) :: i
logical :: tf
tf = modulo(i,2) == 0
end function even
!
logical function odd(i) result(tf)
integer, intent(in) :: i
tf = modulo(i,2) == 1
end function odd
!
logical function triplet(i)
integer, intent(in) :: i
triplet = modulo(i,3) == 0
end function triplet
!
end module foo
!
program main
use foo, only: even,odd,triplet
implicit none
print*,even(2),even(3),even(5),even(0) ! output: T F F T
print*,odd(2),odd(3),odd(5),odd(0) ! output: F T T F
print*,triplet(2),triplet(3),triplet(5),triplet(0) ! output: F T F T
end program main