私はRobert W. Sebestaによるプログラミング言語の概念を読んでおり、第9章には aSubProgram
を a として関数に渡すことに関する簡単なセクションがありparameter
ます。これに関するセクションは非常に短く、約 1.5 ページであり、その適用に関する唯一の説明は次のとおりです。
サブプログラムが数学関数をサンプリングする必要がある場合。いくつかの異なる点で関数をサンプリングすることにより、関数のグラフの下の領域を推定することによって数値積分を行うサブプログラムなど。このようなサブプログラムは、どこでも使用できる必要があります。
これは、私が今まで学んだこととはまったく異なります。この問題に独自の方法でアプローチする場合、function object
を作成し、上記を達成して を受け入れる関数を作成しますfunction objects
。
どこでこれを使用するかわからないため、これが言語の設計上の問題である理由がわかりません。クイック検索では、これが明確になりませんでした。
どうやら、ポインターを利用することで、C および C++ でこれを実現できます。JavaScript などのネストされたサブプログラムを許可する言語では、これを 3 つの方法で行うことができます。
function sub1() {
var x;
function sub2() {
alert( x ); //Creates a dialog box with the value of x
};
function sub3() {
var x;
x = 3;
sub4( sub2 ); //*shallow binding* the environment of the
//call statement that enacts the passed
//subprogram
};
function sub4( subx ) {
var x;
x = 4;
subx();
};
x=1;
sub3();
};
提供された洞察に感謝します。