LINUX.ORG.RU
ФорумTalks

Case со строками

 ,


0

3

Пишу сейчас программу методом копипаста, и при вставке очередного сравнения строк возник вопрос: а есть ли языки, где можно сравнивать строки оператором CASE? Как-то так:

case string of
"qwerty": { printf("Слабый пароль.\n"); }
"абырвалг", "главрыба": { printf("Борменталь.\n"); }
"linux.org.ru", "opensource.ru": { printf("Рулез.\n"); }
else { printf("Ну и запросы у вас.\n"); }

Не в Development потому, что даже если такой язык есть, переходить на него не собираюсь.

★★★★★

Последнее исправление: CYB3R (всего исправлений: 1)
Ответ на: комментарий от AX

как сказал Л.Уолл «легче портировать баш, чем скрипт на баше»

res2500
()
Ответ на: комментарий от x3al

Танцы с бубном вокруг _препроцессора_

нет, лисп хоть и отстой но всё-таки, язык

и ручная пляска с циклом вокруг заранее подготовленного массива — это не «умеют»

да, но см. выше, народ приводил примеры на С/С++ без этих плясок

next_time ★★★★★
()

Я когда-то тоже не понимал, почему такое нельзя реализовать. Теперь знаю.

Eddy_Em ☆☆☆☆☆
()

И вашпе, если тебе такой фигней надо заниматься и пофиг на скорость, то почему бы не воспользоваться getopt_long()?

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от val-amart

Внезапно:

    cout <<
        map<string, function<string()>>
        {
            {"qwerty", [] { return "слабый пароль"; }},
            {"абырвалг", [] { return "Борменталь"; }},
            {"linux.org.ru", [] { return "рулез"; }}
        }.find("linux.org.ru")->second() << endl;
alexeiz
()

Существуют даже такие, например:

case Var of
  "abc" -> str_abc;
  $a -> char_a;
  123 -> int_123;
  123.0 -> float_123;
  _ -> smth_else
end.

blexey ★★★★★
()
Ответ на: комментарий от CYB3R

Это не было сарказмом.

ибо дефайны — тот ещё костыль.

безусловно. желательно от них воздерживаться. тем не менее, дефайны — это тот случай, когда у страха глаза велики. более того, очень во многих случаях они абсолютно безопасны, просто мало кто это понимает.

next_time ★★★★★
()
Ответ на: комментарий от Dispetcher14

Это в сикаке ничего толком нельзя кроме работы с указявками.

Napilnik ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.