Пишу, по большей части, про историю, свою жизнь и немного про программирование.

—5

Это прекрасный образец рака мозга, ящитаю:

<?php
function turn($x)
{
     $y = abs($x);
     if ($y == $x)    
         return "-$y";    
     else        
         return "$y";    
}
?>

You can use this code:

<?php
echo turn(-5) + turn(10);
?>

The output is:

-5

;
Because 5 + -10 = -10

Цитата — из пользовательского комментария к функции abs языка PHP. Для тех, кто далёк от программирования, побуду Капитаном Очевидностью.

Функция меняет знак числа (т. е. было «-5», надо сделать «5», было «2», надо сделать «-2»), для этого она сранивает число с его абсолютным значением и, если оно совпадает (значит число положительное), выводит это число с приделанным символом «-», если нет — то возвращает абсолютное значение.

Правильный ответ:

function turn($x) { return -$x }

не стоит того, чтобы оформлять его в функцию.

Что имел ввиду автор, когда писал «Because 5 + -10 = -10» я не знаю, надо Смирнова спросить, он понимает язык идиотов.

14 комментариев
vkv.livejournal.com 2009

опечатка, очевидно

Евгений Степанищев (bolknote.ru) 2009

Комментарий для vkv.livejournal.com:

Я на код смотрю, поэтому не уверен :)

Johan (www.johan.pp.ru) 2009

Это же не пример функции {return -$x}, а пример использования abs(). Хотя и не самый лучший.

astur (astur.net.ru) 2009

а «5+-10» в php случайно ошибку не выдаст?... вместо «-10»?

Евгений Степанищев (bolknote.ru) 2009

Комментарий для www.johan.pp.ru:

Это не пример. Это решение проблемы, используя функцию abs.

masterspammer.livejournal.com 2009

В php много рака мозга. Одна система именования чего стоит — где-то functionName а где-то function_name. И вот это ещё — http://www.php.net/manual/en/array.sorting.php

Евгений Степанищев (bolknote.ru) 2009

Комментарий для masterspammer.livejournal.com:

Да, я в курсе, что с именованием там, беда, всё-таки писал на нём много лет. Конкретно именование — очень просто решаемый вопрос, обвязать всё объектами и сделать нормальные методы.

Евгений Степанищев (bolknote.ru) 2009

Комментарий для astur.net.ru:

Не, не выдаст.

jankkhvej (jankkhvej.blogspot.com) 2009

Вот вам комментируемые руководства, ага.
Сколько раз в эти комметарии не заглядывал, столько раз удивлялся что так сделано, а не как в Perl и CPAN, например.
Ну да, написать книгу по Perl’у с умными комментариями и нетривиальными примерами не каждый может, зато с PHP любой может прославится на весь мир, просто оставив комментарий на странице руководства.
Аудиторию, опять же, сравнить можно :)

Евгений Степанищев (bolknote.ru) 2009

Комментарий для jankkhvej.blogspot.com:

Там сильно не хватает модерации. За годы оно превратилось в сборник маразмов.

jankkhvej (jankkhvej.blogspot.com) 2009

По-человечески, модерации не хватает и на stackoverflow, и тем более на хабрахабре. Но они же не официальная документация. Это как бы взять и разрешить всем ГОСТы комментировать. Или RFC.

А теперь поди найди Геракла, чтоб расчистить-то...

greli.livejournal.com 2010

Может быть всё-таки return -abs($x)?

Евгений Степанищев (bolknote.ru) 2010

Комментарий для greli.livejournal.com:

Нет.

Евгений Степанищев (bolknote.ru) 2010

Комментарий для greli.livejournal.com:

Ну, я так полагаю (по названию функции), что она должна менять знак числа.