Rails 2.0 komt in zicht.

Geplaatst door Michiel de Mare ma, 01 okt 2007 03:37:00 GMT

Er is een voorvertoning van Rails 2.0 beschikbaar! Veel kleine, subtiele veranderingen. Om een paar dingen te noemen – exception handling ziet er nu goed uit (dat was altijd vrij ellendig). Er schijnt een goede debugger te zijn (daar moet ik echt mee gaan spelen). En er zijn weer allerlei leuke methodes aan de base classes toegevoegd, zoals Array#rand. Die had ik natuurlijk al, alleen had ik hem pick genoemd.

class Array
  def pick
    at rand(size)
  end
end
Veel simpeler worden methodes niet. Of het moet coinflip zijn:
def coinflip
  rand(2) == 0
end

Dat kun je dus ook noteren als:

def coinflip
  [true,false].pick
end

(... alleen is de tweede 2,5x trager.)

Zo gebruiken we ook een array voor max:
[12, i].max

in plaats van

12 < i ? i : 12

Waarom eigenlijk geen Range#pick?

class Range
  def pick
    # we gaan voor de meest bondige oplossing
    to_a.pick
  end
end
(1900...2000).pick
Nu Rails toch methodes van mij aan het overnemen is, waarom niet deze alias?
module Kernel
  alias λ lambda
end

maybe = λ {|a| [a,nil].pick }

p (1..10).map &maybe

Het werkt alleen als je ruby aanroept met de -Ku optie. (u staat voor utf-8)

En tenslotte nog een ideetje uit het Perl-kamp:
module Kernel
  def 
    raise 'Not implemented'
  end
end

case (1..5).pick
when 1,2 : puts "1 of 2"
when 3,4 : puts "3 of 4"
elseend

(… is één unicode karakter).

5 reacties

Reacties

  1. p3t0r zei ongeveer 4 uur later:

    Altijd goed, iemand die doet wat hij zegt ;)

    Terwijl ik een beetje aan het lezen was hoe de ‘yadayadayada’ operator in perl werkt zag ik dat ook ??? en !!! valide operators zijn:

    The … is the “yadayadayada” operator, which is executable but returns a failure. You can also use ??? to produce a warning, or !!! to always die. These also officially define stub blocks if used as the only expression in the block.

    Ik denk overigens dat drie puntjes makkelijker typen dan die elipse… alhoewel: alt-; op de mac!

  2. Rick zei 1 dag later:

    Misschien is het niet zo bedoeld, maar je komt heel know-it-all over. Dat ze methoden van jou overnemen… Dat je dat kunt zeggen. Waarom had jij dan niet een patch ingediend? Rails is open-source hoor.

  3. p3t0r zei 1 dag later:

    @Rick ik denk dat Michiel met het stukje ‘Nu Rails toch methodes van mij aan het overnemen is’ bedoelt dat Rails de betreffende functies nu voor zijn rekening neemt; en niet in de negatieve zin des woords.

  4. Harm Aarts zei 3 dagen later:

    Dat het zolang heeft geduurd voordat die debugger terug was! Verbaasde me echt, ik gebruikte de breakpointer erg veel.

    Wat ik mooi vind aan 2.0 is dat ze de ‘bloat’ hebben aangepakt. Minder is meer, zeker in code. Bijvoorbeeld alle database adapters zitten nu in aparte gems. Ook behoort het geheel wat consistenter te worden. Nu de ‘if elsif else end’ contructie nog. Waar is in godsnaam die ‘e’ in elsif?? Misschien Ruby 2.0.

  5. SpoBo zei 48 dagen later:

    @Harm omdat een engelsman de l niet als ‘el’ uitspreekt maar eerder zonder de e… en Ruby wilt nu eenmaal wel engelse woorden behouden omdat dat voor iedereen logisch is.

(Laat url/e-mail achter »)

   Voorvertoning