Size: a a a

2021 April 13

a

allter in Modern::Perl
Ну, так вот в Perl так не принято. К примеру, в JS решили ввести отдельный тип undefined для отличия подобных вещей. А в Perl он не нужен просто по архетиктуре.
источник

R

Roman in Modern::Perl
С чего бы это не принято? Кто-то закон такой издал?
источник

R

Roman in Modern::Perl
undef — полноценное значение
источник

a

allter in Modern::Perl
Здесь инспектируется память процесса. В отличие от has_next из паттерна Iterator, здесь нет сайд-эффекта от этого (ну, если $hash будет не как в вашем примере, чем-то сложным, то там конечно произойдёт автовивификация, что вполне себе сайд-эффект).
источник

R

Roman in Modern::Perl
пох, суть одна
источник

a

allter in Modern::Perl
Потому что так никто не пишет...
источник

R

Roman in Modern::Perl
ну, если вы не пишите, это ваши трудности
источник

a

allter in Modern::Perl
А когда начинают писать "как в Java", то вытекают глаза.
источник

SZ

Sergey Zhmylove in Modern::Perl
Тем, что my
источник

R

Roman in Modern::Perl
Такой пример: передаете список объектов, хотите получить список ответов. Нет ответа — значение undef. Переберите ответы в цикле.
источник

SZ

Sergey Zhmylove in Modern::Perl
Какой-то странный пример
источник

R

Roman in Modern::Perl
Если в вашей практике подобного не встречалось, не надо это приписывать языку.
источник

a

allter in Modern::Perl
Наоборот, это экономит кучу времени.

Что такое undef значения? Это просто признак отсутствующего/ошибочного значения. Пытаться передавать им какой-то сигнал - как правило приводит к куче потерянного времени. Примерно также, как, например когда в качестве внешнего id решают использовать 0 (ноль)...
источник

a

allter in Modern::Perl
Это легко выразить, например, если передвать ссылку вместо данных (или, например, массив из 1 элемента). undef - конец данных, \ undef - признак отсутствия ответа.

Но на практике так приходится делать очень редко.
источник

R

Roman in Modern::Perl
Наверно по этому я и использую такую передачу ответа с целью оптимизации по времени. Странно, не правда ли? Вызов обычно дороже.
источник

R

Roman in Modern::Perl
Ссылка дороже. undef ничего не стоит, особенно если вы его из XS возвращаете как константу PL_undef
источник

DF

Denis F in Modern::Perl
Ну зависит от условий, я сам писал такой итератор на перле потому что он во внешнюю систему ходил и каждый next был по секунде
источник

a

allter in Modern::Perl
Вот попытка использовать в качестве возвращаемых значений не что-то однозначно определяемое, а например в зависимости от какой-то внутренней структуры - разное по смыслу - это явный abuse динамической типизации. Рафинированный пример - "stringly typed" API
источник

R

Roman in Modern::Perl
Согласен, это не часто нужно. И этот факт не делает это запрещенным в perl приемом.
источник

a

allter in Modern::Perl
Что-то не понял логики. Ходили во внешнюю систему, поэтому делали 2 запроса вместо одного?
источник