宣告功能

考慮該計劃

implicit none
integer f, i
f(i)=i

print *, f(1)
end

這裡 f 是一個宣告函式。它具有整數結果型別,採用一個整數偽引數。 1

這樣的語句函式存在於定義它的範圍內。特別是,它可以訪問該範圍內可訪問的變數和命名常量。

但是,語句函式受到許多限制並且可能令人困惑(看起來像陣列元素賦值語句一樣偶然。) 重要的限制是:

  • 函式結果和偽引數必須是標量
  • 偽引數與函式在同一範圍內
  • 語句函式沒有區域性變數
  • 語句函式不能作為實際引數傳遞

語句功能的主要優點由內部函式重複

implicit none

print *, f(1)

contains

  integer function f(i)
    integer i
    f = i
  end function

end

內部函式不受上述限制的約束,儘管值得注意的是內部子程式可能不包含其他內部子程式(但它可能包含語句功能)。

內部函式有自己的範圍,但也有可用的主機關聯。

1 在真正的舊程式碼示例中,即使結果具有顯式型別,也會發現隱式型別化語句函式的偽引數並不罕見。