2016-05-17 8 views
3

fortranの関数のさまざまな構文の間で混乱します。ここでfortran関数の構文を修正する

function func(i) result(j) 
... 
end function fun 

は、第2の例である

real function func (x) 
... 
end function func 

これは、1つは、近代的なFORTRANの標準に従って適切な構文である

real function func (x) 
    ... 
    return 
    end function func 

第三の例でありますか?そして、2番目と3番目の例では、タイプrealのプログラムで複数の変数を宣言すると、コンパイラはどの変数を返すのかを知っていますか?

+1

@HighPerformanceMark私は同意しますが、これは関連していますが、これは(少なくとも) – OMGtechy

答えて

4

状況によっては、すべての例が適切です。これの側面はスタイルの好みになります。

opening関数ステートメントにRESULT指定子がない場合、関数の本体の内部では、関数の結果は関数と同じ名前になります。

最初の例のように、opening関数ステートメントでRESULT指定子を使用して、関数結果の名前を別のものに変更することができます。

関数名以外の関数名に名前を使用する方が好きかもしれません。実際に関数を再帰的に呼び出す場合は、これを行う必要があります。

openingステートメントで関数の型を指定するか(2番目または3番目の例に従って)、または関数自体の指定部分(本体内)で関数の型を指定できますあなたの最初の例ではおそらく起こっていることですが、暗黙のタイピングは別として)。関数の結果の属性は本文に指定する必要があります。そのため、関数本体にすべてをまとめておくことを好むスタイルの問題があります(スコープや定義の順序に関連する複雑な合併症も避けられます)。暗黙のタイピングを使用するべきではありません。

最後の例では、関数の実行可能部分の最後に明示的にreturn文があります。これは不要です - 関数は、実行が関数の実行可能部分の終わりに達すると自動的に戻ります。コンパイラが突然自動的に復帰するのを忘れるかもしれないという深刻な着席の恐れがあるため、おそらくreturnを好む人もいれば、これはばかげた愚かさだと思う人もいます。

反復 - 関数の名前は、関数名です。関数名には、開始関数文にRESULT句がない場合、それ以外の場合は結果句の名前です。

関連する問題