3

だから私はこの機能を得ました:

function M = getA(X)
global h;
QPL96 =  h;
M = QPL96;
endfunction

今:

octave:115> h
h =  0.10000
octave:116> getA(X)
ans = [](0x0)

それは奇妙ではありませんか?h を含む式がない限り機能します。それ以外の場合は、そのゴミを返します。なぜ私はこれを行うことができないのですか?h を引数にして回避する必要がありますか?

4

1 に答える 1

3

h"global" を使用するすべての場所で global として宣言する必要がhあり、それには本体が含まれます。したがってglobal h、プロンプトで入力すれば問題ありません。ドキュメントを参照してください。以下は私にとってはうまくいきます:

octave> function M = getA(X)
> global h;
> M = h;
> endfunction
octave> h = 0.01
h =  0.0010000
octave> getA
ans = [](0x0)
octave> global h
octave> h
h = [](0x0)
octave> h = 0.01
h =  0.010000
octave> h
h =  0.010000
octave> getA
ans =  0.010000

しかし、実際には、グローバル変数を使用するべきではありません。それは本当に悪い習慣です。変数を引数として渡します。同じグループの変数を渡している場合は、構造体を渡しますが、それでもグローバル変数は使用しないでください。

編集: これは同じ質問です。

于 2012-12-04T23:07:35.093 に答える