test na cislo
Jiri Polcar
polcar na physics.muni.cz
Čtvrtek Říjen 24 16:03:16 MEST 2002
On Thu, Oct 24, 2002 at 03:35:28PM +0200, Honza Pazdziora wrote:
> On Thu, Oct 24, 2002 at 03:30:19PM +0200, Jiri Polcar wrote:
> >
> > Uzivatel z^a'da', aby kdyz zada cislo v libovolnem prijatelnem tvaru,
>
> Ale co je a neni prijatelny tvar musite specifikova Vy. A pokud se Vam
> nelibi, ze je "234asdf678" povazovano za prijatelny tvar pro cislo
> 234, tak Vam nic jineho nez ten regularni vyraz nezbyde.
>
Rek bych, ze v Perlu existuji tri typy objektu:
1) veci, se kterymi lze provadet ciselne operace nez problemu ( 2, 3 )
2) veci, ktera se prevedou na cislo, ale s warningem ( 321fsd )
3) veci, ktere se prevedou na nulu, ale s warningem ( dsaf )
Cisla jsou pro me bod 1). Pripady 2) a 3) trochu splyvaji, protoze 0d5 se
prevede na nulu s warningem, ale je to,je technicky detail.
> > tak aby bylo akceptovano, pouzito pri vypoctu, ...
> > Naopak, pokud zada vec, ktera neni cislem, aby o tom byl zpraven a
> > vypocet se neprovedl.
>
> Pak ale nekdo musi napsat, jak rozlisit ty libovolne prijatelne tvary
> od tech, ktere uz "nejsou cislem".
>
> > Z chovani perlu pri (napr.) scitani je jasne, ze perl vi (umi poznat),
> > jestli to cislo je nebo neni, takze pouzivani regularnich vyrazu pro
>
> Tohle _neni_ pravda. Perl umi zkonvertovat retezec na cislo. Cili
> z "234asdf678" udela pri pricteni nuly 234. A takhle zkonvertovat umi
> i retezec, ktery Vy ve Vasi konkretni situaci povazujete za libovolny
> prijatelny, tak i ten retezec, ktery uz pro Vas ve Vasi konkretni
> situaci neni cislem.
>
> > test znamena duplikaci prace, kterou uz perl udelal. Jde o to, jak z
> > nej tu informaci dostat.
>
> Tam zadna takova informace neni.
Myslim, ze je zrejme: perl ma metodu jak poznat, jestli se mu string
libi nebo nelibi jako cislo (dle me definice), to je jasne, protoze
nekdy vypise warning a jidny ne.
Mozna to Perl dela jen pri pouziti a pak neni jina moznost nez ho k tomu
donutit pomoci
{
$SIG{__WARN__} = sub { die "ERROR" };
eval { $cislo += 0 };
}
unless ( $@ ) { print "Cislo\n" } else { print "Necislo\n" }
--
JP
Další informace o konferenci Perl