Onze dagmethode #2: Numeric#in
Geplaatst door Michiel de Mare wo, 06 feb 2008 06:27:00 GMT
De meeste web-applicaties lijken niet veel met random getallen van doen te hebben, online-pokersites natuurlijk uitgezonderd (hoop ik), maar toch komen ze verbazend veel van pas. Daarom introduceer ik vandaag een nieuwe notatie voor kans.
# het kan natuurlijk zo:
redirect_to home_url if rand < 0.2222
# dit is al beter
redirect_to home_url if rand(9) < 2
# maar niet zo mooi als dit
redirect_to home_url if 2.in 9
# de code
class Numeric
def in(other)
rand(other) < self
end
end
Hmm.. ik blijf even zeuren over naamgeving hoor ;)
in… waarom verwacht ik dan zoiets te kunnen doen:
5.in? 1..8
Oftewel include? van de andere kant? Zoiets dus:
Zijn
in
enin?
niet verschillend genoeg?@RemVee
ja nu je het zegt… je hebt een punt ;)
Dat vraagteken typte ik er pas bij toen ik het voorbeeld maakte… dat had ik misschien al moeten bedenken toen ik aan het comment begon!
Ik zat nog na te denken over mijn vraagteken… maar eigenlijk vind ik dat de door Michiel voorgestelde methode ook zou moeten eindigen op een vraagteken.
De algemeen aangenomen conventie is toch dat alle methodes die als vraag worden gelezen en een boolean terug geven dienen te eindigen op een vraagteken?
M’n broer kwam met de volgende oplossing:
class Numeric def out_of(i) rand(i) < to_i ? 1 : 0 end end
2.out_of(9).times do redirect_to home_url end