- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
if (IsPostBack)
{
string PostBackerID = Request.Form.Get("__EVENTTARGET");
string PostBackerArg = Request.Form.Get("__EVENTARGUMENT");
if (PostBackerID == "ctl00$cphMainContent$pagerID")
{
CurrentReviewPage = int.Parse(PostBackerArg);
FillReviews();
}
else if (PostBackerID == "ctl00$cphMainContent$Like")
{
FillLike();
}
else if (PostBackerID == "ctl00$cphMainContent$review")
{
AddReview(PostBackerArg);
}
else if (PostBackerID == "ctl00$cphMainContent$Follow")
{
FillFollow();
}
else if (PostBackerID == "ctl00$cphMainContent$WebResultpagerID")
{
CurrentWebResultPage = int.Parse(PostBackerArg);
FillWebResults();
}
else if (PostBackerID == "ctl00$cphMainContent$WebResultCluster" || PostBackerID == "ctl00$cphMainContent$HiddenButton")
{
CurrentWebResultPage = 0;
int SelectedClusterID = int.Parse(PostBackerArg);
if (AllClusters != null && AllClusters.ContainsKey(SelectedClusterID))
{
SelectedClusterName = AllClusters[SelectedClusterID];
FillWebResults();
}
}
}
guest 18.05.2012 10:53 # +3
TarasB 18.05.2012 10:56 # 0
absolut 18.05.2012 11:31 # 0
roman-kashitsyn 18.05.2012 11:33 # 0
Lure Of Chaos 19.05.2012 00:58 # 0
имхо, если вам понадобился switch-case в java, то вы что-то делаете неправильно (есть же ооп)
Lure Of Chaos 19.05.2012 00:59 # 0
3.14159265 20.05.2012 12:25 # 0
Тарас где-то хорошо про это написал, назвав это "ооп-измом головного мозга."
А вот в js точно не нужен.
wvxvw 20.05.2012 13:56 # 0
wvxvw 20.05.2012 14:20 # 0
roman-kashitsyn 20.05.2012 18:13 # 0
roman-kashitsyn 20.05.2012 19:40 # +1
wvxvw 20.05.2012 22:32 # 0
Можно было, конечно добавить предупреждение, если otherwise не в конце, или если его нету, и ничего не совпало - но это ж для примера сделано.
roman-kashitsyn 20.05.2012 22:55 # 0
Макрос довольно редко должен выполнять переданный ему код, ведь задача макросов - конструировать выражения.
wvxvw 21.05.2012 00:14 # 0
С какой стати "задача макросов конструировать выражения"? Нет, макрос это в первую очередь процедура которая не вычисляет аргументы, но вычисляет результат. То, что можно ее использовать для того, чтобы что-то конструировать - это вторично.
roman-kashitsyn 21.05.2012 06:51 # 0
Лолчто
wvxvw 21.05.2012 00:29 # 0
roman-kashitsyn 21.05.2012 09:07 # 0
Да, бывает, что макросы вычисляют всё сразу, например, если они выполняют упрощения и переданный им код не зависит от входных параметров и свободных переменных. Но это скорее частный случай.
В вашем же случае код в ветках выполнится на этапе компиляции, а не "в рантайме". Т.е. ваш макрос генерирует ответ, а не выражение, которое будет вычисляться для получение этого самого ответа. Следовательно, могут быть использованы только те данные, которые известны на этапе компиляции и не изменяются в процессе выполнения программы.
У вас всё работает только потому, что вы выполняете код в repl, где этапы компиляции и выполнения практически неразличимы.
wvxvw 21.05.2012 09:44 # 0
А кто сказал, что мне нужна эта подстановка в рантайме? Наоборот, я не хочу, чтобы это происходило - на то макросы и компилируются первыми.
roman-kashitsyn 21.05.2012 10:19 # +1
Из этого могу заключить, что вы не можете в макросы. Кичитесь везде коммон-лиспом, а сами не осилили глубоких заложенных в нём идей. Пишите на нём какое-то императивное месиво. У меня кровавые слёзы текут от цикла с setf внутри макроса.
Я даже стал понимать, почему вам CL нравится больше других языков, поддерживающих функциональный стиль. Видимо потому, что он настолько либерален, что позволяет писать программы в любом стиле, например, в стиле JS.
Пора вылезти уже из своего уютненького жабаскриптового мирка, и не пытаться впихнуть в его рамки лиспы, эрланги и хаскеллы, называя всё, что не впихнулось, бесполезной ересью, а расширить свой ум и попробовать изменить методы, изменить способ мышления. Попробуйте, вам понравится. Код не работает как раз из-за тех проблем, которые я описал.
wvxvw 21.05.2012 10:35 # 0
roman-kashitsyn 21.05.2012 10:46 # 0
wvxvw 21.05.2012 10:52 # 0
С таким же успехом я мог бы сказать "вылезите ис своего унылого Ява-мира, в котором весь код пишется в функциях и бла-бла-бла". А может этот макрос был нужен для использования в другом макросе, или для определения каких-нибудь переменных, для определения системы (для сборки проекта), для определения каких-нибудь синтаксических правил, и еще кучу вариантов использования можно придумать.
roman-kashitsyn 21.05.2012 10:33 # 0
Написание оптимальной версии макроса - задача специфическая, нетривиальная и может потребовать пары дней для реализации.
Можно учитывать количество веток, и строить разные выражения в зависимости от числа. К примеру, если веток < n (где n регулируемый параметр), достаточно простого cond. Если веток много, то можно строить оптимальной таблицы переходов на основании хэш-кода строк в условиях.
Всё это хорошо и реализуемо, но, к счастью, нужно нечасто, и в большинстве случаев достаточно простого перебора условий по порядку.
mangyst 21.05.2012 10:37 # −2
roman-kashitsyn 21.05.2012 10:46 # 0
roman-kashitsyn 18.05.2012 11:02 # 0
mangyst 18.05.2012 11:36 # −5
mangyst 18.05.2012 14:24 # −5
mangyst 21.05.2012 10:29 # −5
wvxvw 18.05.2012 11:03 # 0
mangyst 18.05.2012 11:34 # −3
inkanus-gray 18.05.2012 14:47 # 0
roman-kashitsyn 18.05.2012 14:50 # +1
mangyst 18.05.2012 14:51 # 0
guest 19.05.2012 09:51 # −14
guest 19.05.2012 09:53 # −13
guest 19.05.2012 09:55 # −13
guest 08.02.2013 08:06 # 0
p.s. сейчас его поделки достались мне в наследство, и они тупо не компилируются :(