Názor k článku Programovací jazyk TCL od Pavel Křívánek - Jedno z možných řešení ve Smalltalku je např.: resAB...

  • Článek je starý, nové názory již nelze přidávat.
  • 23. 7. 2005 12:03

    Pavel Křívánek
    Jedno z možných řešení ve Smalltalku je např.:
    resAB := vysledky select: [ :v | v first & v second ] thenCollect: [ :v | v third ].
    resAb := vysledky select: [ :v | v first & v second not ] thenCollect: [ :v | v third ].
    resaB := vysledky select: [ :v | v first not & v second ] thenCollect: [ :v | v third ].
    resab := vysledky select: [ :v | v first not & v second not ] thenCollect: [ :v | v third ].
    nebo třeba
    select := [:val | vysledky select: [ :v | (v first: 2) = val ] thenCollect: [ :v | v third ] ].
    resAB := select value: #(true true).
    resAb := select value: #(true false).
    resaB := select value: #(false true).
    resab := select value: #(false false).
    nebo imperativněji, blíže Vašemu řešení:
    resAB := OrderedCollection new.
    resAb := OrderedCollection new.
    resaB := OrderedCollection new.
    resab := OrderedCollection new.
    
    vysledky do: [ :v |
        (v first & v second) ifTrue: [ resAB add: v third ].
        (v first & v second not) ifTrue: [ resAb add: v third ].
        (v first not & v second) ifTrue: [ resaB add: v third ].
        (v first not & v second not) ifTrue: [ resab add: v third ] ].
    Příkladů, na kterých se dá ukázat, že právě ten a ten určitý jazyk je nejlepší, se dá vymyslet hodně. Podobně by se dalo třeba zadat naimplementovat tak základní věc, jako singleton (jedináček), nebo nějaký příklad, kde se dá skvěle využít dynamická dědičnost, a Python by proti Selfu vypadal jak malej do školky (což by, mimochodem, nebyl zcela mylný závěr ;-).