On-line: гостей 0. Всего: 0 [подробнее..]
АвторСообщение



Пост N: 121
Зарегистрирован: 07.08.06
ссылка на сообщение  Отправлено: 02.03.13 11:05. Заголовок: preprocessor, правая часть после "=>": как заставить его воспринимать "[" и "]" как индексы массива?


hi all

Дано:
1) двумерный массив пар {ключ, значение}, ключи - всегда в первом индексе.
2) функция aval4key(), получающая на вход массив и значение ключа и возвращающая значение по этому ключу.

Функция вызывается достаточно часто, поэтому хочу преобразовать её вызовы в inlined-подстановки.
То есть, думаю сделать что-то типа следующего:

#xcommand INL_aval4key(<a>, <k>, @<v>) => <v>:=ascan(<a>,{|x||x[1]==<k>})

И в коде заменить вызовы функции на вот это:
...
somekey='key1'
someval=''; INL_aval4key(my_array, somekey, @someval)
...

Трабл в том, что не получается подсунуть препроцессору квадратные скобки, задающие индекс (в примере выше - первый индекс в каждой паре, т.е. x[1]).

Подскажите, плз, как это сделать (и допускается ли это вообще) ?


Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 2 [только новые]





Пост N: 131
Зарегистрирован: 10.07.07
ссылка на сообщение  Отправлено: 02.03.13 12:02. Заголовок: Можно так попробоват..


Можно так попробовать x\[1] вместо |x[1]

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 122
Зарегистрирован: 07.08.06
ссылка на сообщение  Отправлено: 02.03.13 13:10. Заголовок: Спасибо, получилось...


Спасибо, получилось.

// test.prg
#xcommand INL_aval4key(<a>, <k>, @<v>) => <v>:=<a>\[ascan(<a>,{|x|x\[1]==<k>})]
#xtranslate INL_aval4key(<a>, <k>) => <a>\[ascan(<a>,{|x|x\[1]==<k>})]

V=0; INL_AVAL4KEY(ARGS, 'PASS', @V)
U=INL_AVAL4KEY(ARGS, 'PASS')


// clipper test.prg /p + type test.ppo:

V=0; V:=ARGS[ascan(ARGS,{|x|x[1]=="PASS"})]
U=ARGS[ascan(ARGS,{|x|x[1]=="PASS"})]


Спасибо: 0 
ПрофильЦитата Ответить
Ответ:
1 2 3 4 5 6 7 8 9
большой шрифт малый шрифт надстрочный подстрочный заголовок большой заголовок видео с youtube.com картинка из интернета картинка с компьютера ссылка файл с компьютера русская клавиатура транслитератор  цитата  кавычки моноширинный шрифт моноширинный шрифт горизонтальная линия отступ точка LI бегущая строка оффтопик свернутый текст

показывать это сообщение только модераторам
не делать ссылки активными
Имя, пароль:      зарегистрироваться    
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 0
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет