Cの入れ子関数
一部のアプリケーションでは、一部の関数が別の関数内で宣言されていることを確認しました。これは入れ子関数と呼ばれることもありますが、実際には入れ子関数ではありません。これは字句スコープと呼ばれます。コンパイラが内部関数の正しいメモリ位置に到達できないため、字句スコープはCでは無効です。
ネストされた関数定義は、周囲のブロックのローカル変数にアクセスできません。それらはグローバル変数にのみアクセスできます。 Cには、ローカルスコープとグローバルスコープの2つのネストされたスコープがあります。したがって、入れ子関数の用途は限られています。以下のような入れ子関数を作成したい場合、エラーが発生します。
例
#include <stdio.h> main(void) { printf("Main Function"); int my_fun() { printf("my_fun function"); // defining another function inside the first function. int my_fun2() { printf("my_fun2 is inner function"); } } my_fun2(); }
出力
text.c:(.text+0x1a): undefined reference to `my_fun2'
ただし、GNU Cコンパイラの拡張により、ネストされた関数を宣言できます。このため、入れ子関数を宣言する前にautoキーワードを追加する必要があります。
例
#include <stdio.h> main(void) { auto int my_fun(); my_fun(); printf("Main Function\n"); int my_fun() { printf("my_fun function\n"); } printf("Done"); }
出力
my_fun function Main Function Done
-
JavaScriptの簡潔な矢印関数
簡潔な矢印関数の構文は次のとおりです- (param1, param2) =>param1+param2 のみがあり、単一のパラメータがある場合は、次のように記述することもできます- param1=>param1*2 の後に中括弧{}がない場合は、暗黙的に戻ります。 以下は、JavaScriptで簡潔な矢印関数を実装するためのコードです- 例 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta na
-
JavaScriptのファーストクラス関数
JavaScriptは関数をオブジェクトとして扱い、関数をパラメーターとして別の関数に渡したり、他の関数から関数を返したりすることもできます。 JavaScriptでは、関数はファーストクラスの関数です。つまり、変数、オブジェクト、配列に格納できます。高階関数は、関数を取得するか、関数を返すか、またはその両方を実行できます。 以下は、JavaScriptでファーストクラス関数を実装するためのコードです- 例 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UT