Конструктор массива Ключевые слова: массив, конструктор
Простой конструктор
Собственно говоря, функция:
Функция КонстМассив(
З1=Неопределено, З2=Неопределено, З3=Неопределено, З4=Неопределено, З5=Неопределено,
З6=Неопределено, З7=Неопределено, З8=Неопределено, З9=Неопределено, З10=Неопределено,
З11=Неопределено, З12=Неопределено, З13=Неопределено, З14=Неопределено, З15=Неопределено,
З16=Неопределено, З17=Неопределено, З18=Неопределено, З19=Неопределено, З20=Неопределено
) Экспорт
Перем М;
М=Новый Массив();
Если З1=Неопределено Тогда Возврат М; Иначе М.Добавить(З1); КонецЕсли;
Если З2=Неопределено Тогда Возврат М; Иначе М.Добавить(З2); КонецЕсли;
Если З3=Неопределено Тогда Возврат М; Иначе М.Добавить(З3); КонецЕсли;
Если З4=Неопределено Тогда Возврат М; Иначе М.Добавить(З4); КонецЕсли;
Если З5=Неопределено Тогда Возврат М; Иначе М.Добавить(З5); КонецЕсли;
Если З6=Неопределено Тогда Возврат М; Иначе М.Добавить(З6); КонецЕсли;
Если З7=Неопределено Тогда Возврат М; Иначе М.Добавить(З7); КонецЕсли;
Если З8=Неопределено Тогда Возврат М; Иначе М.Добавить(З8); КонецЕсли;
Если З9=Неопределено Тогда Возврат М; Иначе М.Добавить(З9); КонецЕсли;
Если З10=Неопределено Тогда Возврат М; Иначе М.Добавить(З10); КонецЕсли;
Если З11=Неопределено Тогда Возврат М; Иначе М.Добавить(З11); КонецЕсли;
Если З12=Неопределено Тогда Возврат М; Иначе М.Добавить(З12); КонецЕсли;
Если З13=Неопределено Тогда Возврат М; Иначе М.Добавить(З13); КонецЕсли;
Если З14=Неопределено Тогда Возврат М; Иначе М.Добавить(З14); КонецЕсли;
Если З15=Неопределено Тогда Возврат М; Иначе М.Добавить(З15); КонецЕсли;
Если З16=Неопределено Тогда Возврат М; Иначе М.Добавить(З16); КонецЕсли;
Если З17=Неопределено Тогда Возврат М; Иначе М.Добавить(З17); КонецЕсли;
Если З18=Неопределено Тогда Возврат М; Иначе М.Добавить(З18); КонецЕсли;
Если З19=Неопределено Тогда Возврат М; Иначе М.Добавить(З19); КонецЕсли;
Если З20=Неопределено Тогда Возврат М; Иначе М.Добавить(З20); КонецЕсли;
Возврат М;
КонецФункции
А вот пример использования:
Массив=КонстМассив(1,2,3);
сообщить(ЗначениеВСтрокуВнутр(Массив));
Более читабельная версия от progr
Функция КонструкторМассива(
З1=Неопределено, З2=Неопределено, З3=Неопределено, З4=Неопределено, З5=Неопределено,
З6=Неопределено, З7=Неопределено, З8=Неопределено, З9=Неопределено, З10=Неопределено,
З11=Неопределено, З12=Неопределено, З13=Неопределено, З14=Неопределено, З15=Неопределено,
З16=Неопределено, З17=Неопределено, З18=Неопределено, З19=Неопределено, З20=Неопределено
) Экспорт
Перем М;
М=Новый Массив();
Для А=1 По 20 Цикл
ТекЗначение=Вычислить("З"+А);
Если ТекЗначение=Неопределено Тогда
Прервать;
Иначе
М.Добавить(ТекЗначение);
КонецЕсли;
КонецЦикла;
Возврат М;
КонецФункции
От Гения 1С: Можно пожертвовать читабельностью в пользу скорости, в данном примере тратится слишком много времени на выполнение интерпретации в строке Вычислить, можете попробовать замерить через табло. Уважаемый progr, не все, что читабельно - быстро.
Конструктор на основе структуры
Это метод для извращенцев.
Рассмотрим на примере, как создать массив из элементов 1,2,3.
Вариант 1:
М=МассивИзЗначенийСтруктуры(Новый Структура("Э1,Э2,Э3",1,2,3));
Вариант 2:
М=МассивИзСтруктуры(Новый Структура(ЭнКлючейСтруктуры(3),1,2,3));
Где:
- ЭнКлючейСтруктуры - возвращает строку вида Э1, Э2, … ЭN.
- МассивИзЗначенийСтруктуры - создает массив из значений структуры.
Обсуждение: v8: Задолбало отсутвие конструктора массива, написал свой
|