Re: Как можно обойти ограничение в 26 параметров? | |
---|---|
Аспид Сообщений: 3475 Откуда: Москва Дата регистрации: 01.04.2005 |
В общем зависит от задачи. А Александр спросил, видимо на чем то споткнувшись... Перечитав стартовый топик, впечатление, что с подходом что то не то. А Empty, как раз по описанной тобой причине использую) Часто в классе не знаю, какой объект будет вызван, и что вернет. А по именам легко разбирается. ИМХО. Это порочно! Это жесткие связи. Это просто плохо. И годится только для ограниченных частных случаев. ------------------ |
Re: Как можно обойти ограничение в 26 параметров? | |
---|---|
Foxtrot Сообщений: 3408 Откуда: Куда: Дата регистрации: 25.04.2003 |
напомнил анек про прапорщика возьмем количество M, нет M мало, возьмем N ------------------ Мойте ноги, моя ноги вы моете и руки |
Re: Как можно обойти ограничение в 26 параметров? | |
---|---|
lulgu Сообщений: 1838 Дата регистрации: 30.11.2016 |
Интересно, о чем это? Пояснили бы про эти частные порочные связи, а то мало ли что, "птичьи болезни" не дремлют. |
Re: Как можно обойти ограничение в 26 параметров? | |
---|---|
sphinx Автор Сообщений: 31166 Откуда: Каменск-Уральски Дата регистрации: 22.11.2006 |
Тогда коллекция совсем не нужна - нужное число раз я и без коллекции вызову. А хотелось в цикле написать одну строчку.. Впрочем, идея с передачей через массив похоже очень даже подойдет. Другие идеи тоже интересны. В общем есть над чем подумать. Спасибо! ------------------ "Veni, vidi, vici!"(с) |
Re: Как можно обойти ограничение в 26 параметров? | |
---|---|
akvvohinc Сообщений: 4201 Откуда: Москва Дата регистрации: 11.11.2008 |
Странно. Тогда я не понимаю, какую задачу ты решаешь. Что именно ты собираешься вызывать нужное число раз? Я думал, что коллекция из 100 элементов тебе нужна для передачи 100 параметров одновременно в некоторую функцию. И это совсем не то же самое, что вызвать эту функцию несколько раз с частью параметров. |
Re: Как можно обойти ограничение в 26 параметров? | |
---|---|
pasha_usue Сообщений: 3647 Откуда: Е-бург Дата регистрации: 06.10.2006 |
|
Re: Как можно обойти ограничение в 26 параметров? | |
---|---|
sphinx Автор Сообщений: 31166 Откуда: Каменск-Уральски Дата регистрации: 22.11.2006 |
Ну смотри. Допустим есть некая функция/метод, которая принимает некий символьный параметр и что-то с ним делает. Таких всевозможных значений может быть много, поэтому вместо
написать что-то типа
Как-то поприятнее смотрится, нежели СТО РАЗ повторять вызов функции/метода. Поэтому идея с массивом выглядит очень даже выгодно - передали массив, из него сделать коллекцию... и далее по плану. ------------------ "Veni, vidi, vici!"(с) |
Re: Как можно обойти ограничение в 26 параметров? | |
---|---|
Igor Korolyov Сообщений: 34580 Дата регистрации: 28.05.2002 |
Нет не плохо, просто ты это позиционировал как "буквально на каждом шагу такое нужно". А я изначально говорил что это (передача "параметром" курсора/части курсора - т.е. просто кучи записей) исключения, и нужны весьма и весьма нечасто... Да нет, речь идёт про то что МЕТОД объекта чаще/больше работает со свойствами ЭТОГО же объекта, а не с "внешними параметрами". В целом это нормально. Другое дело, что заменять явные параметры (то что нужно исключительно в одном методе) на свойства (то что как минимум для нескольких методов "общее") неправильно. Ну разве что реально их (параметров) очень много, они в большинстве своём "необязательные", или use case предполагает многократные вызовы такого метода с изменением лишь части параметров (т.е. как надо как бы "запоминать" параметры из предыдущего вызова, и лишь некоторые из них менять). Прямо скажу, код типа
Даже в чём-то похожий LINQ-овский someList.ForEach(лямбда_выполняющаяся_для_каждого_элемента_коллекции) многими разработчиками считается весьма плохим стилем, в отличие аналогичного по сути, но (вот же кошмар!) четырёхстрочного
и это с учётом того что "обрабатываемый список" (т.е. значения параметров подставляемые в каждый вызов) УЖЕ готов (получен откуда то), и НЕ формируется явно в коде как список из N элементов (тем паче где N под сотню). Хотя да, для наркоманского JS вполне в духе языка конструкция
------------------ WBR, Igor |
Re: Как можно обойти ограничение в 26 параметров? | |
---|---|
Igor Korolyov Сообщений: 34580 Дата регистрации: 28.05.2002 |
весь вопрос в том как/откуда берётся этот самый p1,p2,...p100 и может ли он быть взят в виде коллекции/массива/курсора СРАЗУ. Если он формируется через p1="значение 1" p2="значение 2" ... остальные 100 строк или даже pArray[1]="значение 1" pArray[2]="значение 2" ... то нет РЕШИТЕЛЬНО никакой красоты в цикле для вызова этого самого SimpleMetod. Если же источник "параметров" изначально может быть получен как массив, то FOR EACH работает с массивом - ему не нужен никакой метод для перегонки данных в коллекцию. Более того, тут даже FOR EACH не обязателен - вполне хватит обычного FOR index = 1 TO ALEN(массив) - с одним лишь исключением- не пытаться работать с "пустым" массивом - т.к. фокс не позволяет делать массив БЕЗ элементов, хоть один да будет там всегда - это надо отдельно учесть и как-то пропустить цикл в этом случае. Бессмысленно на самом деле. Ненужные действия. При том что даже изначальное "сделать цикл" может быть бессмысленным, если значения для этого цикла не получаются сразу в виде курсора/массива/коллекции, а прописываются в коде "по одному". ------------------ WBR, Igor |
Re: Как можно обойти ограничение в 26 параметров? | |
---|---|
Аспид Сообщений: 3475 Откуда: Москва Дата регистрации: 01.04.2005 |
Александр, может задача слишком необычна. Но, как говорил Игорь, все зависит от того, откуда все эти переменные берутся. Банально - поле таблицы. Scan. Объект на форме - уже коллекция. Foreach. Читаем файл... так после прочтения нужного кол-ва, сразу и вызывать. Ввод с клавы - сразу после ввода. Т.е. вырисовывается цикл вызова, не в момент уже собранных параметров, а в момент их собирания? В голову не приходит откуда еще могут взяться данные) В общем, если отступишь еще на шаг, и озвучишь, что за задача, может и решение будет выглядеть иначе) ------------------ |
Re: Как можно обойти ограничение в 26 параметров? | |
---|---|
Ydin Сообщений: 7648 Откуда: Киев Дата регистрации: 16.12.2005 |
|
Re: Как можно обойти ограничение в 26 параметров? | |
---|---|
spinz Сообщений: 5263 Дата регистрации: 21.01.2016 |
Такие "говорящие" имена изрядно веселят |
Re: Как можно обойти ограничение в 26 параметров? | |
---|---|
Ydin Сообщений: 7648 Откуда: Киев Дата регистрации: 16.12.2005 |
Это цитата из одной песни
Hearts Марти Балин Исправлено 1 раз(а). Последнее : Ydin, 08.12.17 11:27 |
Re: Как можно обойти ограничение в 26 параметров? | |
---|---|
akvvohinc Сообщений: 4201 Откуда: Москва Дата регистрации: 11.11.2008 |
А в чем преимущество (отличия) такого "простого объекта" от Empty-объекта? Или иначе - зачем создавать Empty-объект таким, мягко говоря, странным способом? Исправлено 2 раз(а). Последнее : akvvohinc, 08.12.17 13:49 |
Re: Как можно обойти ограничение в 26 параметров? | |
---|---|
Igor Korolyov Сообщений: 34580 Дата регистрации: 28.05.2002 |
Смысла в большинстве этих методов нет. CreateMyObject -> просто CreateObject("Empty") PutProp -> просто ADDPROPERTY() - он НЕ ломается если свойство уже существует - просто в него же и пишет. CopyProp -> опять же тривиальное ADDPROPERTY(m.obj2, "propname", m.obj1.propname) Разве что CopyProps нужен - но я вот так навскидку даже не придумаю для чего его применить - "ограниченное копирование свойств"... Т.е. скорее всего весьма редкое использование.
В SCATTER использовать можно лишь с опцией ADDITIVE - иначе фокс создаст новый объект и всё что было ранее в этом объекте затрёт. И в SCATTER (с опцией ADDITIVE) и в GATHER вполне себе можно использовать любой фоксовый объект - хоть Custom, хоть Grid (хотя смысла в этом не очень то и много - разве что сохранение/восстановление свойств объекта в курсор). ------------------ WBR, Igor |
Re: Как можно обойти ограничение в 26 параметров? | |
---|---|
Ydin Сообщений: 7648 Откуда: Киев Дата регистрации: 16.12.2005 |
Использую их в основном для снятия полей одной строки таблицы. А у меня поля Name, Parent ключевые для FrameWork'а Вот и не подходит мне Empty-объект. В нем больше, чем мне надо. Этот "простой" объект более empty, чем объект Empty. Простите за каламбур. Это объект вообще без свойств и методов. Методы написаны для наших программистов. Работая с FrameWork'ом многие просто ADDPROPERTY() не знают |
Re: Как можно обойти ограничение в 26 параметров? | |
---|---|
akvvohinc Сообщений: 4201 Откуда: Москва Дата регистрации: 11.11.2008 |
Все, что вы перечислили, относится не к Empty-объекту, а к Custom.
У Empty нет ни свойств, ни методов, то есть, это и есть ваш "пустой объект". И в него также, помимо прочего, можно добавлять свойства с помощью SCATTER NAME oEmpty ADDITIVE. Исправлено 2 раз(а). Последнее : akvvohinc, 08.12.17 15:43 |
Re: Как можно обойти ограничение в 26 параметров? | |
---|---|
Ydin Сообщений: 7648 Откуда: Киев Дата регистрации: 16.12.2005 |
Да, походу, был не прав.
|
Re: Как можно обойти ограничение в 26 параметров? | |
---|---|
Аспид Сообщений: 3475 Откуда: Москва Дата регистрации: 01.04.2005 |
Ерунда) Думаю просто вся эта фишка создана, до Empty фокса. Привык. А потом уж смысла менять не было. (у меня с КА та же хрень))) ------------------ |
Re: Как можно обойти ограничение в 26 параметров? | |
---|---|
akvvohinc Сообщений: 4201 Откуда: Москва Дата регистрации: 11.11.2008 |
Да, вероятно.
Ведь Empty появился только в восьмерке. |
© 2000-2024 Fox Club  |