「引数」と「パラメータ」という用語の使用方法に戸惑うことがよくあります。それらは、プログラミングの世界で同じ意味で使用されているようです。
それらを使用するための正しい規則は何ですか?
パラメーターは関数によって入力として定義されるものであり、引数はパラメーターとして渡されるものです。
void foo(int bar) { ... }
foo(baz);
この例では、bar
はfoo
のパラメーターです。 baz
は、foo
に渡される引数です。
パラメータは、関数の宣言内の変数です。
functionName(parameter) {
// do something
}
An Argumentは、関数に渡されるこの変数の実際の値です。
functionName(argument);
User1515422の場合、パラメーターと引数の違いを示す非常に具体的な例:
次の機能を検討してください。
int divide(int numerator, int denominator) {
return numerator/denominator;
}
2つのパラメーター:numerator
とdenominator
があり、定義時に設定されます。定義されると、関数のパラメーターは固定され、変更されません。
次に、その関数の呼び出しを検討します。
int result = divide(8, 4);
この場合、8
と4
は、関数に渡される引数です。 numerator
パラメーターは引数8
の値に設定され、denominator
は4
に設定されます。次に、引数の値に設定されたパラメーターで関数が評価されます。このプロセスは次と同等と考えることができます。
int divide() {
int numerator = 8;
int denominator = 4;
return numerator/denominator;
}
パラメータと引数の違いは、変数とその値の違いに似ています。 int x = 5;
と書くと、変数はx
で、値は5
です。 「変数xの値は5です」の省略形として「xは5」などと言うのが自然であるため混乱が生じる可能性がありますが、うまくいけば区別が明確になります。
それは物事を明確にしますか?
引数は、サブルーチンを呼び出すときに持っているものです。パラメータは、サブルーチン内でアクセスしているものです。
argle(foo, bar);
foo
とbar
は引数です。
public static void main(final String[] args) {
args.length;
}
args
はパラメーターです。
このテーマに関する parameter Wikipediaの記事にNiceセクションがあります。
要するに-parameterはfunctionとargumentによって定義された正式な名前です関数に渡される実際の値(5など)または物(変数など)です。
ウィキペディアはほとんど信頼できる情報源ではありませんが、 用語の説明 というまともな仕事をしています。
パラメータは引数に対するものであり、クラスはオブジェクトのインスタンスに対するものであると言えるでしょう。
次のような関数を定義する場合:
MyFunction(param1,param2) {
print parameter1, parameter
}
関数を定義するときにパラメーターを設定します。このような関数を呼び出すとき:
MyFunction('argument1', 'argument2');
パラメータの値を、渡した引数に設定します。引数は、あなたがそれを呼び出すときに質問に入れたものです。お役に立てば幸いです。
ほとんどの場合、プロシージャには、呼び出された状況に関する情報が必要です。繰り返しタスクまたは共有タスクを実行するプロシージャは、呼び出しごとに異なる情報を使用します。この情報は、呼び出し時にプロシージャに渡す変数、定数、および式で構成されます。
この情報をプロシージャに伝えるために、プロシージャはパラメータを定義し、呼び出しコードはそのパラメータに引数を渡します。パラメータは駐車場、引数は自動車と考えることができます。異なる自動車が異なる時間に駐車場に駐車できるように、呼び出しコードは、プロシージャを呼び出すたびに同じパラメーターに異なる引数を渡すことができます。
パラメーター
パラメータは、プロシージャが呼び出すときに渡すことを期待する値を表します。プロシージャの宣言はパラメータを定義します。
FunctionまたはSub procedureを定義する場合、プロシージャ名の直後にかっこで囲んだパラメータリストを指定します。パラメーターごとに、名前、データ型、および渡すメカニズム(ByValまたはByRef)を指定します。また、パラメーターがオプションであることを示すこともできます。つまり、呼び出し元のコードがパラメーターに値を渡す必要はありません。
各パラメーターの名前は、プロシージャ内のローカル変数として機能します。パラメーター名は、他の変数を使用するのと同じ方法で使用します。
引数
引数は、プロシージャを呼び出すときにプロシージャパラメータに渡す値を表します。呼び出しコードは、プロシージャを呼び出すときに引数を提供します。
FunctionまたはSub procedureを呼び出すときは、プロシージャ名の直後にかっこで引数リストを含めます。各引数は、リスト内の同じ位置にあるパラメーターに対応しています。
パラメーターの定義とは対照的に、引数には名前がありません。各引数は式であり、0個以上の変数、定数、およびリテラルを含めることができます。評価された式のデータ型は、通常、対応するパラメーターに定義されたデータ型と一致する必要があり、いずれの場合もパラメーター型に変換可能でなければなりません。
単に大きな違いはありません。この中に深く入れば、diffを識別できます。主に、引数/パラメーター/署名はすべて同じであることがわかります。
基本的にパラメータは渡すデータのタイプを定義します。引数は実際に渡すデータ/変数を定義します。
パラメータの例:-
int add(int a,int b){ //Here a and be both can treated as Parameter
return a+b;
}
引数の例:-
int return_result=add(3,4); // Here 3 and 4 both can treated as Argument
or
int x=3,y=4;
int return_result=add(x,y);// Here x and y both can treated as Argument
基本的な代数のように考えてください。 Xは入力する必要があるパラメーターであり、その中に配置する数値は引数です。したがって、X + 2のような方程式がある場合、Xがパラメーターであり、Xに対して変更する数値は引数として認識されます。したがって、その方程式を使用してxの1を補うと、1 + 2になります。これは、1がXのパラメーターに提供される引数であることを意味します。
同様に、dosomething( "This")のような関数がある場合、その定義はdosomething(string parametername)になりますが、 "This"は実際の引数になり、ここではparameternameと名付けられます。
それを見る最も簡単な方法では、パラメーターは引数が埋めるものであり、引数はそのパラメーターで許可されているものであればいくつでもかまいません。
したがって、上記のX + 1式のように、多くの有効な引数を持つことができる1つのパラメーターを持つことができるため、パラメーターと引数の間の多対1の関係になります。 Xは既知の任意の数にすることができ、それらはすべて有効です。
実際、パラメーターと引数は両方とも異なるタイプのパラメーターです。それらは
1)仮パラメーター-変数は関数/サブルーチン定義に表示されます
例えば(Javaで)
public void foo(Integer integer, String... s2)
ここで、整数とs2の両方は、正式なパラメーターまたは大まかに言ってパラメーターです。
2)実際のパラメーターまたは引数-変数を呼び出すときに変数がサブルーチンに表示されます
すでに定義されたサブルーチン
例えば(Javaの場合)関数 "foo"がオブジェクト "testObject"に存在する場合、
testObject.foo(new Integer(1), "test")
そのため、関数定義内の変数は正式なパラメーターと呼ばれるか、単にパラメーターと変数と呼ばれ、メソッドの呼び出しは実際のパラメーターまたは引数と呼ばれます。役に立てば幸いです。
変数は、保存場所と、データ、値を含む関連するシンボリック名(識別子)です。
パラメータは、関数に渡される変数です。
引数は、関数に渡されるデータ(値)です。
$variable = 'data/value';
function first($variable){ ... }
function second('data/value'){ ... }
function third(16){ ... }
関数では、最初にパラメーターを渡します。
2番目と3番目の関数では、引数を渡します。