|
|
ru.perl- RU.PERL ---------------------------------------------------------------------- From : Renat Araslanow 2:5011/119.1 28 Feb 2003 13:54:09 To : Alan Long Subject : несколько дурацких вопросов. -------------------------------------------------------------------------------- Однажды 28 Feb 03 01:52, Alan Long писал All: AL> Тут вот поднакопилось несколько дурацких вопросов, которые хотелось-бы AL> задать почтенной публике и узнать, может-быть я заблуждаюсь. AL> Первый: прототипы для функций когда используется объектный интерфейс. AL> --------------------------------------------------------------------- AL> Хотелось-бы узнать как правильно описать прототипы функций new и bar из AL> модуля Foo. perldoc perlsub ... Method calls are not influenced by prototypes either, because the function to be called is indeterminate at compile time, since the exact code called depends on inheritance. ... т.е. незачем. AL> Второй, про значения: AL> -------------------- AL> достаточно удобная конструкция: AL> $var ||= 'value'; AL> Hо хотелось-бы что-бы значение переменной $var присвоивалось только в том AL> случае если $var == undef, а в случае $var == '' или $var == 0 оставалось AL> прежним, то есть сейчас приходится писать: $var = 'value' unless( defined AL> $var ); Что несколько громоздко и по скорости - не совсем ясно, иногда AL> получается медленне, особенно, если $var достаточно сложная переменная. 1.pl $var=$val unless defined $var; perl -MO=Concise,-tree 1.pl <9>leave[t1]-+-<1>enter |-<2>nextstate(main 5 1.pl:1) `-null---<5>or(other->6)-+-<4>defined---ex-rv2sv---<3>gvsv `-<8>sassign-+-ex-rv2sv---<6>gvsv `-ex-rv2sv---<7>gvsv 2.pl $var||=$val; perl -MO=Concise,-tree 2.pl <7>leave[t1]-+-<1>enter |-<2>nextstate(main 5 2.pl:1) `-null---<4>orassign(other->5)-+-ex-rv2sv---<3>gvsv `-<6>sassign---ex-rv2sv---<5>gvsv потому и медленнее. AL> Можно конечно родить что-то типа: AL> sub _default(\$$) { AL> $$_[0] = $_[1] unless defined $$_[0]; AL> } AL> и использовать: AL> _default $var => 'value'; зачем? только чтобы не пользоваться unless defined? в мозгу витает навязчевая фраза: "не ту страну назвали гондурасом" */_=)_/* --- [Преждевременная оптимизация -- корень всех зол Д. Кнут] * Origin: Чайник с программным управлениемЪ (2:5011/119.1) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.perl/32783e5f210c.html, оценка из 5, голосов 10
|