- 1
- 2
- 3
if err != nil {
return nil, err
}
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+3
if err != nil {
return nil, err
}
Как же заебало
Пора первые выёбываются, вторые просто пишут код
Directed by Robert B Weide
В «Nim», кстати, и массивы есть:
var a = @[1, 2, 3]
let a = @[1, 2, 3]
Ещё есть объекты. В семёрке можно создавать экземпляр анонимного класса:
В семёрке появилось расширение «Ds» со структурами данных, как в серьёзных ЯП:
https://www.php.net/manual/ru/book.ds.php
Пишут такое про туплы:
Tuples are very much like what you have seen so far from objects. They are value types where the assignment operator copies each component. Unlike object types though, tuple types are structurally typed, meaning different tuple-types are equivalent if they specify fields of the same type and of the same name in the same order.
The constructor () can be used to construct tuples. The order of the fields in the constructor must match the order in the tuple's definition. But unlike objects, a name for the tuple type may not be used here.
Like the object type the notation t.field is used to access a tuple's field. Another notation that is not available for objects is t[i] to access the i'th field. Here i must be a constant integer.
А такое про массивы:
An array is a simple fixed-length container. Each element in an array has the same type. The array's index type can be any ordinal type.
Arrays can be constructed using []
Получается, что туплы круче массивов?
1. Туплами можно заменять записи (структуры), потому что элемент доступен как t.field.
2. Туплами можно заменять массивы, потому что элемент доступен как t[i].
То есть туплы — это более общий, более универсальный тип данных.
Массивы не заменить из-за иммутабельности поди? Или они мутабельные?
Фу как пошло. В Сишке же есть errno.
Ждём когда goвнючки прибегут с восторженным лицом:
— Я вам принес новую фичу, это такой thread local код ошибки, который сохраняется между вызовами.
— Это уже было в Симпсшке. См. extern int errno;
О блин, паника не смертельна, можно обработать как исключение?
* Флудит (копипастит даже комментарии с ГК на ГК) и троллит
* Угнетает определённые группы людей (геев, затем вореционеров, теперь женщин)
* Пишет в нравоучительном тоне
Написанную Стертором хуйню тут принято скрывать юзерскриптами
Слишком старая, видимо.
Ейму
Рейму.
Им
JloJle4Ka (оно/(н)его/(н)ему/(н)его/ним/нём)
P.S. А что, в русском языке одно и то же слово в одном и том же падеже может быть в двух разных формах, и это не только питушня вроде более-менее вариативного "в мёде/в меду", "тобой/тобою", а именно две разные формы, ни одну из которых нельзя выкинуть? Какой пипец, как этот язык вообще учат.
Потому что пиструнчика уже нет, п вот проблемы-то остались!
Приготовь крафтпакет для блевотины. Некоторые пол меняют после 50, так что суицид совершают уже на пенсии.
https://youtu.be/rJWDISzOVpc
Технически это всё ещё после 27
Потому что в армию все равно не призвали.
Монады в Haskell, промисы в JS, исключения в python позволяют писать без ошибок, ошибки сами как-то обрабатываются.
Предлагаю взять язык для белых.
As of PHP 7.1.0, a catch block may specify multiple exceptions using the pipe (|) character. This is useful for when different exceptions from different class hierarchies are handled the same.
И в то же время не имеют нормальных механизмов педерачи ошибок по стеку без синтаксического мусора и бойлерплейта.
Вместо них какие-то err, unwrap и паники.
Напомню что во всех нормальных промышленных языках, абсолютно везде есть try~catch~finally
Так же сделано автозакрытие ресурсов: try-with-resources в «Java», with в «Python», using в C# итд.
Но есть анскильные неудачники решили как обычно пойти своим путём, но опять обосрались.
А всё потому что не слушали мудрые напутствия Царя.
Сектант понимает, что он бездарность и ничего не может, как и его недоязычок. Именно поэтому он пытается эмулировать семантику исключений и рассчитано это на то, что сторонний наблюдатель подумает “да это же исключения”, но нет. Это не исключения - это паника.
Т.е. если я могу спокойно игнорировать и использовать исключения в С++-коде, то сектант не может сделать тоже самое. Я могу обработать исключения, если меня не устраивает “паника”. Сектанты же не может. Есть какие-то нелепые попытки ловить паники, но они не юзабельны.
Так же )? - обезьяну научили очередному трюку и она везде это пихает. Опять же ситуация в том, что это не обработка ошибок. Ошибка должна быть снабжена информацией об ошибке - здесь же никакой информации нет. Любая попытка её добавить ломается, т.к. это говно не может в вывод типов, а даже если бы могло - это никак не поможет.
Если проще. Данный синтаксический мусор - это моча в рожи сектантов. Т.е. сектанты блеяли, что у них там супер-обработка ошибок и никаких проблем нет. Но как всегда обделались и никто с них за это не спросил.
Этот синтаксический мусор - это генераций бойлерплейта вида:
if(res.err) return res.err;
Как видим проблемы очевидны. Синтаксический мусор + оверхед + проблемы при возврате разных типов. Если исключения можно кидать произвольного типа и строить какие угодно иерархии, то здесь нужно всё сводить к одному типу. Иначе сломается.
Так же, этот мусор генерирует ещё множество побочного мусора вызванного нелепостью данного недоязычка для плебеев.
на чем пишешь?
Эту проблему хорошо решили checked исключения в яже, но к сожалению использовать их для реальных задач нельзя, потому что они довольно быстро засирают весь код.
Я за момомомомомомнадку Either короче
А вот тут тонкий момент. Если у тебя ошибки не часто (т.е. не сраный питон с его "ааа, массив кончился!", а что-то более разумное), то исключения могут и дешевле быть т.к. не засирают успешный путь бесполезными сравнениями.
Ну можно конвертить в более высокоуровневые. В общем-то джависты и с исключениями так делают.
I'll keep this one short and sweet.
Nobody knows how to correctly install and package Python apps. If you write an internal tool in Python, it either needs to be totally portable or just write it in Go or Rust. Save yourself a lot of heartache as people struggle to install the right thing.