169 похожих чатов

А какие у этого try практические плюсы перед eval?

41 ответов

15 просмотров

Джава-господа не писаются с порога

С eval можно выстрелить себе в ногу. С помощью любых перловых try/catch тоже, но например, последствия локализации $@ обычно нивелируются.

Как и у всех правильно сделанных конструкций такого типа - правильное разматывание стека.

Если при выходе из евал вызывается деструктор, внутри которого есть евал, то значение $@ переписывается

Самуан Ункновн
Джава-господа не писаются с порога

Джава-господам должен заходить пхп, там эта часть один в один

Anton Petrusevich
Джава-господам должен заходить пхп, там эта часть ...

Да, но ядерный try/catch тоже чудной, что печалит

Andrey Smirnov / 𝓪𝓵𝓵𝓽𝓮𝓻 /
С eval можно выстрелить себе в ногу. С помощью люб...

Вы всему верите, что вам говорят? ) perl -e 'eval { die 5 }; print "`$@`\n"; eval {6}; print "`$@`\n";' `5 at -e line 1. ` ``

Что с eval нельзя выстрелить себе в ногу. Существует распространённое заблуждение, что удачно завершившийся eval не сбрасывает $@. Приведённый однострочник это опровергает

Oleg-Volkov Автор вопроса
Ярослав 🧞 Косьмина
Что с eval нельзя выстрелить себе в ногу. Существу...

Эээ... Это где это такое распространено и по какой логике? Проверка $@ сразу после eval - это основное её использование и оно бы не работало если бы всё было согласно "заблуждению".

Oleg Volkov
Эээ... Это где это такое распространено и по какой...

Просто люди зачем-то модули вроде Try::Tiny используют и утверждают, что eval "плохо работает" )

Ярослав 🧞 Косьмина
Просто люди зачем-то модули вроде Try::Tiny исполь...

потому что у того в доке описаны всякие corner cases, и он удобнее

Vadim Goncharov
потому что у того в доке описаны всякие corner cas...

Мне вот не удобно подниматься в начало файла и там прописывать use Try::Tiny и затем возвращаться. Хотя я и использую для этого закладки. Ещё он зачем-то подменяет $@ на $_. А если у меня в $_ уже есть значение, то его придётся перекладывать в какую-то переменную? Или под "удобно" имеется ввиду не удобство программирования, а нечто иное? )

Ярослав 🧞 Косьмина
Мне вот не удобно подниматься в начало файла и там...

Если у тебя в $_ есть значение, то ты уже немношко не прав

Artem Tepponen
Если у тебя в $_ есть значение, то ты уже немношко...

Ты имеешь ввиду, что все перловики немножко не правы, что программируют на языке в котором есть $_ ? ;)

Ярослав 🧞 Косьмина
Ты имеешь ввиду, что все перловики немножко не пра...

Не, $_ иногда полезна. Но... если есть возможность, лучше без.

Ярослав 🧞 Косьмина
Мне вот не удобно подниматься в начало файла и там...

вы еще не используете тайд local $_ ? тогда мы идём к вам кипятить вас!

Ярослав 🧞 Косьмина
Мне вот не удобно подниматься в начало файла и там...

а с началом файла ты нас просто троллишь пьяным пятничным вечером, признайся :)

Ярослав 🧞 Косьмина
map { eval { 1/$_ } } 0..3

use Try::Tiny; my @floats; for my $integer (0.. 3) { . push @floats, try { . return 1/$integer; . } catch { . return; . } } Это правильнее?

Vadim Goncharov
вы еще не используете тайд local $_ ? тогда мы идё...

При чём тут local? Вот как переписать этот пример с local, без $x? map { my $x=$_; try { 1/$x } catch { say "$x $_" } } 0..3

Ярослав 🧞 Косьмина
При чём тут local? Вот как переписать этот пример ...

это был тонкий намёк, что AnyEvent отучает от $_ или хотя бы заставляет локализовывать его :)

Ярослав 🧞 Косьмина
При чём тут local? Вот как переписать этот пример ...

Перл много где позволяет изъебнуться. Но в большинстве ситуаций наверное не стоит

Ярослав 🧞 Косьмина
Гм. Вместо счётчика caught

Illegal division by zero at -e line 2 вполне достаточно для дебага :)

Vadim Goncharov
не всё корофицировали :)

Всё что энифицировали, то всё и корофицировали, потому что в Coro есть rouse_cb/rouse_wait, для превращения выражений эниэвент в коро

Ярослав 🧞 Косьмина
Всё что энифицировали, то всё и корофицировали, по...

прям всё настолько просто и без подводных граблей?

Vadim Goncharov
Illegal division by zero at -e line 2 вполне дост...

А на каком шаге произошла ошибка?

А если деление в недрах библиотечной функции происходит, а в ней делается минус 3 счётчику, например?

Ярослав 🧞 Косьмина
А если деление в недрах библиотечной функции проис...

c библиотечной у тебя и в случае eval {} такие же проблемы

Vadim Goncharov
прям всё настолько просто и без подводных граблей?

Да. Ещё распространённая задача какие-то глобальные переменные переключать с переключением волокон. Для этого есть обработчики событий выхода и входа из/в произвольное волокно

Vadim Goncharov
c библиотечной у тебя и в случае eval {} такие же ...

map { . my $x=$_; . try { fn_in_lib($x) } . catch { say "$x $_" } } 0..3 map { . eval { fn_in_lib($_) }; . say "$_ $@" if $@; } 0..3 где это?

Ярослав 🧞 Косьмина
map { . my $x=$_; . try { fn_in_lib($x) } . catc...

где-то в жопе, если fn_in_lib сама использует $_ =)

Ярослав 🧞 Косьмина
Coro лучше AnyEvent, разве нет? )

AnyEvent всё равно остаётся, как более низкоуровневый инструмент.

Mons Anderson
AnyEvent всё равно остаётся, как более низкоуровне...

perl <- go <- c <- asm <- машинные коды <- плис <- микросхемы <- счёты

Похожие вопросы

Обсуждают сегодня

Кто нибудь из участников чата пишет на ассемблере под GNU/Linux?
Spiker01
24
анрей С какой целью зашёл?
КТ315
42
я часов 15 назад начал пытаться написать хоть что-то напоминающее ос и у меня есть проблема, которую я пытаюсь решить последние часов 5: есть крч 2 исходника с минимальным код...
Al1to
15
Я не очень много работал с потоками, тут возник вопрос - если будет одновременный доступ к памяти из двух разных потоков, это само по себе приведет к ошибке?
The Bird of Hermes
25
Слушайте, никак не могу заставить работать сортировку в TClientDataSet! Вроде все делаю правильно, создаю индекс, присваиваю его название ClientDataSet1.IndexName, первый раз...
Ivan Burnatov
7
а вот интересный вопрос появляется: допустим у нас есть приложение с системой модулей. Будет ли считаться система модуль+прога ассемблерной программой если: а) Прога на Си, м...
Mixail Frolov
29
я в заголовке имплементировал функцию. В заголовке стоят гарды. Но я все равно получаю multiple definitions. Как это может происходить?
Павλо 🇺🇦
15
как можно вывести первые 100 символов поля content на странице?
Artem
10
коллеги, добрый вечер! А никто не знает как модальная форма может себя закрыть? Ну допустим модальная форма определила, что смысла ей работать нет и хочет вернуть modalResult...
Михаил
83
Может кто встречал такое? Один набор данных, но в одном столбце кодировка нормальная, а в другом ироглифы. Как такое может быть?
Alexander
23
Карта сайта