it-swarm.com.ru

Аргументы или параметры?

Я часто путаюсь с тем, как используются термины "аргументы" и "параметры". Кажется, они взаимозаменяемы в мире программирования.

Что такое правильное соглашение для их использования?

187
Peanut

Параметры - это то, что определяется функциями как входные данные, а аргументы - это то, что передается как параметр.

void foo(int bar) { ... }

foo(baz);

В этом примере bar является параметром для foo. baz - это аргумент, переданный foo.

205
Mehrdad Afshari

A Параметр является переменной в объявлении функции:

functionName(parameter) {
    // do something
}


Аргумент - это фактическое значение этой переменной, которое передается в функцию:

functionName(argument);
195
Rinat Abdullin

Для user1515422 очень конкретный пример, показывающий разницу между параметрами и аргументами:

Рассмотрим эту функцию:

int divide(int numerator, int denominator) {
    return numerator/denominator;
}

У него есть два параметры: 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. Путаница может возникнуть, потому что естественно говорить такие вещи, как "х - это пять", как сокращение от "переменная х имеет значение 5", но, надеюсь, различие очевидно.

Это проясняет вещи?

27
blahdiblah

Аргументы - это то, что вы имеете, когда вызываете подпрограмму. Параметры - это то, к чему вы обращаетесь внутри подпрограммы.

argle(foo, bar);

foo и bar являются аргументами.

public static void main(final String[] args) {
    args.length;
}

args - это параметр.

13
Hank Gay

В параметре есть статья Nice об этой теме в Википедии.

Вкратце - параметр - это формальное имя, определяемое функцией и аргументом фактическое значение (например, 5) или вещь (например, переменная), переданная в функцию.

6
Grzegorz Gierlik

Хотя Википедия вряд ли является авторитетным источником, она неплохо справляется с объясняя термины .

Я думаю, вы могли бы сказать, что параметры для аргументов, что классы для экземпляров объектов ...

4
CJM

Когда вы определяете функцию как:

MyFunction(param1,param2) {
  print parameter1, parameter
}

Вы устанавливаете параметры при определении функции. Когда вы вызываете функцию следующим образом:

MyFunction('argument1', 'argument2');

Вы устанавливаете значения параметров в аргументы, которые вы передали. Аргументы - это то, что вы ставите в вопросе, когда называете это. Надеюсь, что это помогло.

2
Addison

В большинстве случаев процедуре требуется некоторая информация об обстоятельствах, в которых она была вызвана. Процедура, которая выполняет повторные или общие задачи, использует различную информацию для каждого вызова. Эта информация состоит из переменных, констант и выражений, которые вы передаете процедуре при ее вызове.

Чтобы передать эту информацию процедуре, процедура определяет параметр, и вызывающий код передает аргумент этому параметру. Вы можете рассматривать параметр как место для парковки, а аргумент - как автомобиль. Как разные автомобили могут парковаться на парковке в разное время, вызывающий код может передавать разные аргументы одному и тому же параметру при каждом вызове процедуры.

Параметры

Параметр представляет значение, которое процедура ожидает от вас при вызове. Объявление процедуры определяет ее параметры.

Когда вы определяете Функция или Подпроцедура, вы указываете список параметров в скобках сразу после названия процедуры. Для каждого параметра вы указываете имя, тип данных и механизм передачи (ByVal или ByRef). Вы также можете указать, что параметр является необязательным, что означает, что вызывающему коду не нужно передавать значение для него.

Имя каждого параметра служит локальной переменной в процедуре. Вы используете имя параметра так же, как и любую другую переменную.

Аргументы

Аргумент представляет значение, которое вы передаете параметру процедуры при вызове процедуры. Вызывающий код предоставляет аргументы при вызове процедуры.

Когда вы вызываете Функция или Подпроцедура, вы включаете список аргументов в круглые скобки сразу после имени процедуры. Каждый аргумент соответствует параметру в той же позиции в списке.

В отличие от определения параметров, аргументы не имеют имен. Каждый аргумент является выражением, которое может содержать ноль или более переменных, констант и литералов. Тип данных оцененного выражения обычно должен соответствовать типу данных, определенному для соответствующего параметра, и в любом случае он должен быть преобразован в тип параметра.

1
Sachin Mhetre

Просто нет больших отличий. Если мы углубимся в это, мы сможем идентифицировать разницу. В основном мы знаем, что Аргумент/Параметр/Сигнатура все одинаковы.

В основном Параметр определяет тип данных, которые мы передаем. Где --- Аргумент определяет фактические данные/переменную, которую мы передаем.

Пример параметра: -

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
1
Java Developers Guide

Думайте об этом как об основной алгебре. X - это параметр, который вы должны заполнить, а число, которое вы помещаете в него, является аргументом. Поэтому, если у вас есть уравнение, подобное X + 2, X является вашим параметром, и любые числа, которые вы изменяете для X, становятся известными как аргументы. Так что, используя это уравнение, вы добавляете 1 к x, вы получаете 1 + 2. Это означает, что 1 является аргументом, предоставленным параметру X.

Точно так же, если у вас есть такая функция, как dosomething ("This"), ее определением будет dosomething (строковое имя_параметра), но "Это" будет фактическим аргументом, который передается параметру, который здесь называется имя_параметра.

Проще говоря, параметр - это то, что аргумент заполняет, а аргументом может быть любое количество вещей, разрешенных этим параметром.

Таким образом, это отношение многие к одному между параметрами и аргументами, поскольку у вас может быть один параметр, который может иметь много допустимых аргументов, например, наше уравнение X + 1 выше. X может быть любым известным числом, и все они действительны.

0
Gyhth

Фактически и параметр, и аргумент являются разными типами параметров. Те

1) Формальные параметры - переменные появляются в определениях функций/подпрограмм

например (на Java)

public void foo(Integer integer, String... s2)

Здесь и integer, и s2 являются формальными параметрами или свободно говорящими параметрами.

2) Фактические параметры или аргументы - переменные появляются в подпрограммах при вызове

уже определенная подпрограмма

например (в Java) предположим, что если функция "foo" находится в объекте "testObject",

testObject.foo(new Integer(1), "test")

Таким образом, переменные в определении функции называются формальными параметрами или просто параметрами и переменными, тогда как вызывающие методы называются фактическими параметрами или аргументами. Я надеюсь, что это помогает.

0
sakthisundar

Переменная - это место хранения и соответствующее символическое имя (идентификатор), который содержит данные, значение.

Параметр - это переменная, переданная функции.

Аргумент - это данные (значение), переданные функции.

$variable = 'data/value';

function first($variable){ ... }

function second('data/value'){ ... }
function third(16){ ... }

Сначала в функцию передаем параметр.

Во второй и третьей функции мы передаем аргументы.

0
wlf