- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
sub parse_http_date($)
{
my ($date)=@_;
my %months=(Jan=>0,Feb=>1,Mar=>2,Apr=>3,May=>4,Jun=>5,Jul=>6,Aug=>7,Sep=>8,Oct=>9,Nov=>10,Dec=>11);
if($date=~/^[SMTWF][a-z][a-z], (\d\d) ([JFMASOND][a-z][a-z]) (\d\d\d\d) (\d\d):(\d\d):(\d\d) GMT$/)
{ return eval { timegm($6,$5,$4,$1,$months{$2},$3-1900) } }
return undef;
}
Да её целиком можно выкладывать. Как сказал один мой знакомый "Проще своё написать, чем это дол ума доводить".
Вместо
следует писать
UPD: Хотя, конечно, лучше не выёбываться однострочниками и написать по-человечески:
UPD2: Не заметил, что месяцы надо с нуля. Какой багор )))
Он организует листовой контекст справа, а потом переводит результат в скалярный
Сравнил. В «PHP» читаемее.
тогда все соснут
А в хередоке лучше по одному в строке
Всё, я теперь за TCL
https://ideone.com/WuM6dg
Подтверждаю Иньо, «qw» не нужен.
Выводится количество строк в stdin. Кто угадает как это работает?
Подсказки:
* "-n" важен: см perl --help
* про $. можно прочитать в perldoc perlvar
А $. хранит умер последнец прочитанной строки.
получается
Переведи на питухон одной строчкой
Читаемость, как по мне, гораздо лучше: всё просто и понятно даже пятикласснику. Ну, разве что специфичные для «Питона» list comprehensions и f-строки имеются.
Гвидо — пидор. Мало того, что сделал совершенно уёбищные лямбды, так ещё и reduce() в отдельный пакет убрал (а map() и filter() оставил в глобальном пространстве, лол).
Вообще по чесноку конечно мою задачу нужно решать авком
Конечно, «Питон» для таких хаков слишком прост.
З.Ы. Как же бесят эти ебучие подчерки. Как-будто в кишках stl копаешься.
Вот на «Ди» получится довольно коротко.
fn($x) => {...}
Опровергаю. Или там какие-то багры есть, о которых я не знаю?
>reduce() в отдельный пакет убрал (а map() и filter() оставил в глобальном пространстве)
А вот тут верно.
Если проблема только в этом, то во многих языках используют ещё более длинное «function».
Кмк, по-настоящему уёбищные лямбды в крестах.
Зато там можно в одной лямбде использовать три вида скобок! А в «C++20» можно будет все четыре.
Больше ни в одном нормальном* языке программирования так нельзя, к сожалению. А жаль.
*в одном пидарском языке можно, но мы его не будем даже упоминать
Скорее, это просто следствие сложности крестов в целом.
В том же «JavaScript» просто нет смысла контролировать захватываемый ко-ко-контекст, потому что всё равно всё — ссылка, причём не висячая. Захватиться лишнего — похуй.
А в крестах нужно ручками всё контролировать. Реальный пример — возврат замыкания, захватывающего локальную пельменную. Если будем всё захватывать по ссылке — получим висячие ссылки, UB, кровь, кишки. Если будем захватывать по значению — мало того, что проебём весь пирфоманс, так ещё и в принципе проебёмся, потому что некоторые объекты захватывать нельзя.
Если скопировать нельзя — переместить, используя несколько страшно выглядящий «Generalized lambda capture» («C++14»):
Право, я удивлён.
Почему не какой-то очередной упоротый, ничего не означающий значок?
* — кокозатель
& — сцылка
= — всё по значению
Можно например @ или ^
Там можно, да?
Или ты что-то другое имел в виду?
Ну дык вместо нормального замыкания (или хотя бы анонимной функции) — одно выражение-огрызок. Реальный пример: хочу лямбду, принимающую строку и возвращающую пару (строка_в_нижнем_регистре, хэш_строки_в_нижнем_регистре). До 3.8 это можно было сделать либо наивно (повторение кода, удвоение тяжёлых операций — говно, в общем): «lambda s: (s.lower(), hash(s.lower()))», либо уёбищно: «lambda s: (lambda s_lower: (s_lower, hash(s_lower)))(s.lower())». С 3.8 дела стали чу-у-уть лучше: «lambda s: (s_lower := s.lower(), hash(s_lower))», но всё ещё очень плохо — никаких циклов, никаких присваиваний внешним пельменным.
Именно поэтому я за «JavaScript» с его однообразным свинтаксисом для всех функций и замыканий.
Не, ну тут я питонухов поддерживаю: проблема с сишным оператором «=» в том, что его очень легко написать вместо «==» — и, что самое главное, полученная очепятка будет полностью валидным выражением, которое ещё и выполняется правильно, похеривая только дальнейшее выполнение программы. Абсолютно любой человек, который писал на си или крестах что-то сложнее «Хеллоу Ворлда», делал эту опечатку.
А вот с питоньем хером оператором моржовым так опечататься не получится.
Именно поэтому я постоянно пишу константу спереди.
И именно поэтому я против неявного преобразования любой питушни в boolean.
ИМХО, Йода-стайл — это борьба с последствиями, а не причиной. Плюс он не спасает, когда сравниваются две мутабельных переменных.
> И именно поэтому я против неявного преобразования любой питушни в boolean.
Подтверждаю.
Вместо сравнения двух мудакбельных переменных можно сравнивать их разницу с нулём:
Не поможет, когда сравниваются объекты без перегруженного минуса. Векторы, например.
Векторы (геометрические) ещё можно отнять покомпонентно.
А вот строки...
Да и минус породит новый временный объект, а это перепитушня.
Не, к счастью, в крестах для стандартного вектора (который «std::vector») такой операции не предусмотрено.
Хотя, конечно, если захотеть — перегрузить можно всё.
> Да и минус породит новый временный объект, а это перепитушня.
Подтверждаю.
zipWith (-)
https://wandbox.org/permlink/PeXsgwmcVcaRyQ2z
В среде крестовиков это считается очень дурным тоном.
Всем спокойной ночи.
Это как матёрому jsеру подойти и начать рассказывать что есть оператор with(Bagor){...}
Анус себе проинформируй, пёс.
using namespace можно юзать только для своих неймспейсов и только в цпп файле. Это же как импорт со звездой в питоне или жабе. Ты даже не знаешь какие символы тебе прилетят и с чем они потом конфликтанут.
Есть же using, в котором можно указать что тебе конкретно нужно из std.
Но проще писать std::vector и не париться. Тогда читателю сразу понятно, что это не твой самодельный вектор и не бустовый.
Вот тут чувак наглядно поясняет: https://stackoverflow.com/questions/1265039/using-std-namespace (хорошо сказал: «In fact, seeing a raw vector makes me wonder if this is the std::vector or a different user-defined vector»).
Реальный пример приведёшь? Можно вместо std свой namespace.
Ну а что мне мешает сделать функцию
а потом получить из std случайно
и потом много думать почему вдруг у меня две функции
А ты их все знаешь? И какие через 5-10 лет добавят тоже заранее предсказать можешь?
А вообще, вы блядь сарказма не понимаете?
Ну и Макака с перегрузками багор привёл.
Лучше Борманду это расскажи. Он стопудов не в курсе.
Само собой не от хорошей жизни.
А вообще
1. Нужно по дефолту объявлять всё константами, а не переменными.
2. Питухи сделали правильно, но сайд-эффектное присваивание в 90% случаев не нужно
3. Неявная конвертация в bool — зло. Потому я за явный if (nullptr != ptr)
https://govnokod.ru/26754#comment555015
Пацаны, это полная хуета и парадокс блять.
Сособенно то что питух ниже предлагает со сравнением 0 == a - b
Смарити:
Почему происходит очепятка = вместо ==? Нет привычки, недоглядел, лаганула клава, комар сел на нос в это время, недавно писал на другом языке и так далее.
Так сука, если у тебя блять есть достаточно оперативки и внимания, чтобы не забыть преобразовать условное выражение в такое, где константа слева или того хуже, ноль сравнивается с разностью — ТАК ПРОВЕРЬ ТЫ УЖЕ ГЛАЗАМИ БЛЯТЬ КАКОЙ ТАМ У ТЕБЯ ОПЕРАТОР И ОТЪЕБИСЬ.
Кто-то ответит: ну, я уже привык писать константу слева, так что это не требует внимания.
Ну так а хули ты привык к такому сложному действию, а не смог привыкнуть чекать оператор сравнения?
Хуета полная.
Я щитаю, что код — это блять текст, и как редактор я могу сказать, что в тексте должна быть красота, а не один только прагматизм.
0 == a - b — это говнокод, имхо. Это то же самое, что в русском языке инверсировать порядок слов на уёбищный и трудночитаемый, лишь бы избежать ситуации, где тебе понадобится запятая (sic!) чтобы случайно не забыть её поставить.
Это парадокс. Как можно случайно не забыть сделать столько действий, которые нужны чтобы случайно не забыть сделать гораздо меньшее?
https://ru.wikipedia.org/wiki/Мнемоника
В результате мозг оказывается забитым бессмысленной питушнёй вроде «Один бритый англичанин финики грызёт как морковку».
Ага. Я вроде этот позор даже отдельным постом выносил.
Какая дрянь )))