Приемы программирования. Вернуть вектор
Иногда функция должна вернуть не одно, а несколько значений. Например флаг успеха или неудачи, несколько найденных параметров и массив. Фактически она возвращает векторный результат.
Раньше для получения векторного результата я передавал несколько переменных по ссылке и ждал булево значение функции.
// Здесь ожидаю два параметра и двумерный массив, а функция возвращает флаг успеха-неудачи.
function navalniy(
source_data : TVector; var temperature : real; var blood_pressure : real; var spy_data : TVector
) : boolean;
Теперь я просто получаю один векторный результат.
function navalniy( source_data : TVector ) : TVector;
Первый компонент вектора содержит флаг успеха и вычисленные скалярные параметры, остальные — заполненный массив.
spy_data = navalniy( source_data );
if (spy_data[0][0] == 0) {
alert(‘Явка провалена. Немедленно уходить!’);
exit();
} else {
temperature = spy_data[0][1];
blood_pressure = spy_data[0][2];
list_of_comrades = (spy_data[1], …, spy_data[M]);
// Все в порядке, продолжаем готовить революцию
// …
}
Единственное, при таком подходе нужно следить, чтобы размерность второй координаты массива (resulted_array[•][×]) была не меньше размерности ожидаемых дополнительных параметров (param{i}). В противном случае параметры следует вернуть в нескольких начальных компонентах ветора-результата.
spy_data = navalniy( source_data );
if (spy_dat[0][0] > 0) {
temperature =spy_dat[0][1];
blood_pressure = spy_dat[0][2];
leukocytes = spy_datt[1][0];
hemoglobin = spy_dat[1][1];
erythrocytes = spy_dat[1][2];
// Возвращенный массив начинается с N-ой компоненты вектора-результата
list_of_comrades = (spy_dat[N], …, spy_dat[M]);
// …
}
Векторы — это сила.