Comments 16
Функциональный примитив. Зачем это здесь?
+3
Да уж. Как можно с простейшей конструкции сделать не читаемую... Интересно, сколько людей взглянув на эту штуку "(if (> b 0) + -) a b)" навскидку скажут, что она делает. Или просто, мне становится плохо, когда открывающихся скобок меньше, чем закрывающихся.
0
Ну я, например, сразу понял :)
А скобок там хватает вполне.
А скобок там хватает вполне.
0
"(" - 2 штуки
")" - 3 штуки
может это и правильно на этом замечательном языке, но выглядит страшно
")" - 3 штуки
может это и правильно на этом замечательном языке, но выглядит страшно
0
Вам в голову не приходило весь исходник посмотреть?
Там ещё определение функции есть.
Там ещё определение функции есть.
+1
Ой, да и правда: скобок одинаково, только на разных строчках. Я понял, почему эта штука мне совсем не понравилась: это же клон макросов на С. Там, они общепризнанны показателем плохого стиля. И там это не функции, это директивы компилятора.
Да и вправду это похоже на обратную польскую запись. Только вот снова тот вопрос: зачем такое писать. Я опросил 20 магистров факультета кибернетики: за десять секунд только 1 (!) ответил, что эта штука делает. За минуту ответили все кроме двух. Мой вывод: штука энта нечитаемая.
Да и вправду это похоже на обратную польскую запись. Только вот снова тот вопрос: зачем такое писать. Я опросил 20 магистров факультета кибернетики: за десять секунд только 1 (!) ответил, что эта штука делает. За минуту ответили все кроме двух. Мой вывод: штука энта нечитаемая.
-1
Между прочим, очень удобно, если привыкнуть. Это польская запись. Отличное изобретение находит достойное применение во многих продуктах, написанных на языках LISP-семейства.
0
А что именно Вас так в данном примере восхитило?
+1
double aplusabsb(double a,double b)
{
return b ? a-b : a+b;
}
cout << aplusabsb(1,-1);
Ух ты, тоже суммирует a и |b| ;-)
И главное не надо объяснять как работает.
{
return b ? a-b : a+b;
}
cout << aplusabsb(1,-1);
Ух ты, тоже суммирует a и |b| ;-)
И главное не надо объяснять как работает.
+1
Если смотреть с чисто практической точки зрения, решение не хуже и не лучше других.
Тоже работает и даже понятнее чем Ваш пример.
Есть одно но, в scheme логичнее сделать так, а не иначе. И мне это решение нисколько не менее понятно чем аналогичное в C++.
Оно по-своему красиво, и заморочено. Почему Вы считаете, что Ваш код лучше?
Пусть расцветают тысячи цветов (:
float aPlusAbsB(float a, float b)
{
if(b > 0)
return a + b;
else
return a - b;
}
Тоже работает и даже понятнее чем Ваш пример.
Есть одно но, в scheme логичнее сделать так, а не иначе. И мне это решение нисколько не менее понятно чем аналогичное в C++.
Оно по-своему красиво, и заморочено. Почему Вы считаете, что Ваш код лучше?
Пусть расцветают тысячи цветов (:
0
(b > 0) ? (a + b) : (a - b)
потому что -n == true (если n != 0)
0
Sign up to leave a comment.
Про хлопки одной ладонью