Article View: pl.comp.lang.ruby
Article #225Re: Jak dodać własną metodę typu nazwa! do klasy?
From: Wojciech Piekutowski
Date: Sun, 08 Oct 2006 14:56
Date: Sun, 08 Oct 2006 14:56
37 lines
2491 bytes
2491 bytes
Hej,
Rafał Komorowski wrote:
>
> A tak ogólnie, w klasach wbudowanych w Rubiego bardzo brakuje mi paru
> dość oczywistych funkcji, w tym właśnie zaokrąglania floata do zadanego
> miejsca po przecinku. Szkoda takie podstawowe rzeczy implementować już w
> interpretowanym kodzie, do tego przecież właśnie dobrze nadaje się
> kompilowane C.
> Ponadto chciałbym też mieć sprintf, które generuje przecinek jako
> decimal-point i kropkę jako thousands-separator, ale to już z innej
> beczki. Z braku lepszego pomysłu mam po prostu:
>
> class Fixnum
> def format00
> sprintf("%d", self).gsub(/(\d)(?=(\d\d\d)+(?!\d))/, "\\1.")
> end
> end
>
> ale serce mi się kraje, jak widzę wyrażenia regularne zastosowane do tak
> prymitywnych rzeczy. Może jednak warto nauczyć się robić wstawkę w C do
> kodu Rubiego? Nie interesowałem się tym na razie, ale widzę, że w
> "biblii" jest to szeroko opisane.
>
Z ciekawości zajrzałem do mana:
http://unixhelp.ed.ac.uk/CGI/man-cgi?sprintf+3
Jest tam info, że generowanie tych znaków zależy od ustawienia LOCALE na
odpowiednią wartość. W Twoim przypadku pl_PL lub pl_PL.UTF8 (jeśli
używasz unicode w systemie). Można też zmienić tylko poszczególne
składowe pakietu lokalizacyjnego - sam znak separacji i grupowania.
Więcej informacji znajdziesz tutaj:
http://linuxreviews.org/man/locale/index.html.pl
Pozdrawiam,
Wojciech Piekutowski
Technical Details
Message-ID:
<egb3i2$4m9$1@news.task.gda.pl>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!newsfeed.gazeta.pl!news.task.gda.pl!not-for-mailReferences:
<eg90si$dj4$1@news.task.gda.pl> <eg96pc$u4t$1@news.onet.pl> <eg9d1o$q20$1@news.task.gda.pl>Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!newsfeed.gazeta.pl!news.task.gda.pl!not-for-mail From: Wojciech Piekutowski <w.piekutowski@gmail.com> Newsgroups: pl.comp.lang.ruby Subject: Re: Jak dodać własną metodę typu nazwa! do klasy? Date: Sun, 08 Oct 2006 16:56:05 +0200 Organization: CI TASK http://www.task.gda.pl/ Lines: 37 Message-ID: <egb3i2$4m9$1@news.task.gda.pl> References: <eg90si$dj4$1@news.task.gda.pl> <eg96pc$u4t$1@news.onet.pl> <eg9d1o$q20$1@news.task.gda.pl> NNTP-Posting-Host: h238.osiedle.net.pl Mime-Version: 1.0 X-Trace: news.task.gda.pl 1160319362 4809 193.151.67.238 (8 Oct 2006 14:56:02 GMT) X-Complaints-To: abuse@news.task.gda.pl NNTP-Posting-Date: Sun, 8 Oct 2006 14:56:02 +0000 (UTC) User-Agent: Thunderbird 1.5.0.7 (Windows/20060909) In-Reply-To: <eg9d1o$q20$1@news.task.gda.pl> X-Antivirus: avast! (VPS 0640-6, 2006-10-08), Outbound message X-Antivirus-Status: Clean Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit