>>птичко обломинго стучицца к вам:Не понимаю, чем вы так не удовлетоврены, если ваш язык вас полностью устраивает...
Вы поменяли задачу, воспользовавшись(уже дважды) абстрактной формулировкой.
package seqgen;
my ($old, $new);
sub new {
$old = rand;
my $self = {};
bless $self, 'seqgen';
return $self;
}
sub getNext {
do {
$new = rand;
return undef if ($new < 0.000000001)
} until (abs($new - $old) > 0.0000001);
$old = $new;
return $new;
}
1;
package main;
my $generator = seqgen->new;
while (my $nextval =$generator->getNext) {
print "$nextval\n";
}
Это по-длиннее, но с лихвой компенсируется временем, которое я сэкономлю за счет человеческой интерполяции, которой, увы, в питоне нет, и которая в отличие от генераций последовательностей мне нужна постоянно. и модули не надо подключать на каждый чих.
>> иногда полезно узнать, есть ли у класса некий метод.
Мне кажется слишком рискованным такой метод исследования неизвестного класса, я бы предпочел использовать:
cat module.pm | egrep "^[ ]*sub[ ]*"
чтобы выяснить его методы.
>>да-да-да! а если у нас вперемешку строки/числа/списки/хеши...
значит нужно просто написать другую функцию сравнения для sort ...
но я бы посоветовал вам избегать неопределенности в принимаемых и возвращаемых параметрах функций - в длине кода выигрышь небольшой, зато сопровождающие будут долго вникать.
>> выхлоп:
вот именно, что выхлоп. Вы странно подбираете задачи, если хотите меня переспорить. Питон скриптовой язык, и значит будет заведомо проигрывать компилируемым или той же яве в скорости вычислений. Так что всякие yield здесь как собаке боковой карман.
Напишите мне лучше как вы реализуете поиск уникальных записей в файле, содержащем 2-3 миллиона строк.