Можно ли задать параметр процедуру по умолчанию?

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Можно ли задать параметр процедуру по умолчанию?

Сообщение maxvell » 20.05.2012 17:41:33

Нужно внутри сортировки использовать внешнюю функцию обмена двух элементов. При этом есть вариант, что этой функции не будет в фактических параметрах. Можно ли задать параметр по умолчанию в виде процедуры?

Предполагается нечто типа:
Код: Выделить всё
procedure SelectionSort(var A: Arr; n: range;
swap: TSwapProc = @replace(var A: arr; i,j : range));


при попытке откомпилировать это, Free Pascal Compiler version 2.4.4-3.1 [2012/01/04] for i386 выдаёт ошибку:
sortings.pas(60,27) Error: Illegal expression
Последний раз редактировалось maxvell 20.05.2012 18:03:28, всего редактировалось 1 раз.
maxvell
незнакомец
 
Сообщения: 9
Зарегистрирован: 20.05.2012 15:37:42

Re: Можно ли задать параметр процедуру по умолчанию?

Сообщение ronin » 20.05.2012 17:47:59

ronin
постоялец
 
Сообщения: 174
Зарегистрирован: 27.01.2010 00:14:46

Re: Можно ли задать параметр процедуру по умолчанию?

Сообщение maxvell » 20.05.2012 17:54:21


Спасибо, конечно, но это не то, что мне нужно. Мне нужно не просто передача функции как параметр, а именно присваивание параметра по умолчанию, то есть, по сути: исправить то, что я написал на то, что будет работать..
maxvell
незнакомец
 
Сообщения: 9
Зарегистрирован: 20.05.2012 15:37:42

Re: Можно ли задать параметр процедуру по умолчанию?

Сообщение Ism » 20.05.2012 18:17:49

Ну дык проверяйте параметр внутри процедуры и делайте с ним , что хотите. Хотя описанное напоминает функционал объекта
Ism
энтузиаст
 
Сообщения: 908
Зарегистрирован: 06.04.2007 17:36:08

Re: Можно ли задать параметр процедуру по умолчанию?

Сообщение maxvell » 20.05.2012 18:27:19

Ism писал(а):проверяйте параметр

Как же мне его проверить, если его вообще не будет? Мне как раз и нужно задать его по умолчанию, а компилятор этого делать не хочет, видимо, я неправильно пишу это присваивание "по умолчанию"..
maxvell
незнакомец
 
Сообщения: 9
Зарегистрирован: 20.05.2012 15:37:42

Re: Можно ли задать параметр процедуру по умолчанию?

Сообщение Ism » 20.05.2012 18:29:09

Тип данных параметра ?
Ism
энтузиаст
 
Сообщения: 908
Зарегистрирован: 06.04.2007 17:36:08

Re: Можно ли задать параметр процедуру по умолчанию?

Сообщение maxvell » 20.05.2012 19:02:31

Ism, type p1 = procedure(var A: arr; i, j: integer);
процедура типа p1
maxvell
незнакомец
 
Сообщения: 9
Зарегистрирован: 20.05.2012 15:37:42

Re: Можно ли задать параметр процедуру по умолчанию?

Сообщение v-t-l » 20.05.2012 19:32:53

Может так?
Код: Выделить всё
procedure SelectionSort(var A: Arr; n: range;
swap: TSwapProc = @replace);
v-t-l
энтузиаст
 
Сообщения: 742
Зарегистрирован: 13.05.2007 16:27:22
Откуда: Belarus

Re: Можно ли задать параметр процедуру по умолчанию?

Сообщение maxvell » 20.05.2012 19:33:36

v-t-l, не, так тоже пробовал..
maxvell
незнакомец
 
Сообщения: 9
Зарегистрирован: 20.05.2012 15:37:42

Re: Можно ли задать параметр процедуру по умолчанию?

Сообщение Ism » 20.05.2012 19:45:58

procedure SelectionSort(var A: Arr; n: range;
swap: TSwapObject;


Может в качестве параметра передавать объект выполняющий нужные функции ?
Если его не передавать , то swap будет nil и это можно проверить
Ism
энтузиаст
 
Сообщения: 908
Зарегистрирован: 06.04.2007 17:36:08

Re: Можно ли задать параметр процедуру по умолчанию?

Сообщение maxvell » 20.05.2012 19:47:06

Ism писал(а):Может в качестве параметра передавать объект выполняющий нужные функции ?

Спасибо за совет, сейчас попробую!
maxvell
незнакомец
 
Сообщения: 9
Зарегистрирован: 20.05.2012 15:37:42


Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: Majestic-12 [Bot] и гости: 231

Рейтинг@Mail.ru