Nuovo articolo su TRM: Il Distributive Conjunction Pattern

Ciao a tutti,

scommetto che vi starete chiedendo che cos’è Il Distributive Conjunction
Pattern.

Leggete
l’articolohttp://www.therubymine.com/articles/2007/05/14/il-distributive-conjunction-patternsu
The RubyMine di ChiaroScuro e lo scoprirete!

Buona lettura!

Gianluca

fatemi sapere che ne pensate, perchè ne vado orgoglioso :slight_smile:

in pratica è codice che vi permette di scrivere cose tipo:
people.all.capitalize

invece di:
people.map{|p| p.capitalize}

On 5/14/07, Gianluca A. [email protected] wrote:

Buona lettura!

Gianluca


Ml mailing list
[email protected]
http://lists.ruby-it.org/mailman/listinfo/ml


– Kia

therubymine.com | be a miner

chiaro scuro wrote:

fatemi sapere che ne pensate, perchè ne vado orgoglioso :slight_smile:

in pratica è codice che vi permette di scrivere cose tipo:
people.all.capitalize

invece di:
people.map{|p| p.capitalize}

Bella trovata,
ho trovato l’articolo molto interessante e di molta utilita’
pratica.

Gendag

uff, facevo sempre people.capitalize_all (e con method_missing faccio
il resto). Forse dovrei cambiare strategia!

— Gianluca A. [email protected] wrote:

Ciao a tutti,

scommetto che vi starete chiedendo che cos’è Il
Distributive Conjunction
Pattern.

bell’articolo, peccato che nel tentare di commentare
ho fatto un casino e adesso ci sono 3 commenti
identici, scusate :frowning:

  ___________________________________________________________

Yahoo! Mail is the world’s favourite email. Don’t settle for less, sign
up for
your free account today
http://uk.rd.yahoo.com/evt=44106/*http://uk.docs.yahoo.com/mail/winter07.html

L’articolo è ottimo. Bel lavoro.

Semanticamente mi piaceva di più “each” (persons.each.capitalize) di
“all”, ma essendo già preso… :slight_smile: Per me “all” sa un po’ di vechi
incubi con javascript-in-IE!

Forse “every” potrebbe funzionare:
persons.every.capitalize

O magari in esperanto!
persons.ciu.capitalize

O latino:
persons.quisque.capitalize! (con un alias “sulum” magari…)

:slight_smile:

Gianluca A. wrote:

Buona lettura!

Gianluca


Ml mailing list
[email protected]
http://lists.ruby-it.org/mailman/listinfo/ml


“Den som väntar på något gott väntar inte för länge. Den som väntar på någon som har gått
får vänta länge. Den som har väntat för gott har väntat för länge.”

se sono commenti positivi va bene così :slight_smile:

On 5/15/07, gabriele renzi [email protected] wrote:

http://uk.rd.yahoo.com/evt=44106/*http://uk.docs.yahoo.com/mail/winter07.html


Ml mailing list
[email protected]
http://lists.ruby-it.org/mailman/listinfo/ml


– Kia

therubymine.com | be a miner

On 5/15/07, david [email protected] wrote:

Forse “every” potrebbe funzionare:
persons.every.capitalize

nella mia versione casalinga del codice ho infatti aliased “every” :slight_smile:
così posso scrivere people.every.name che come dici tu è più chiaro…

magari facciamo un metodo “s” per il genitivo sassone: people/s.name :wink:
ok mi fermo sennò mi lascio prendere la mano e inizio con gli inflectors

O latino:

persons.quisque.capitalize! (con un alias "sulum" magari...)

ahah, chi di voi conosce Lingua Latina Perligata?
La declinazione di una variable vi dà il tipo e la cardinalità… geniale!

— david [email protected] wrote:

L’articolo è ottimo. Bel lavoro.

Semanticamente mi piaceva di più “each”
(persons.each.capitalize) di
“all”, ma essendo già preso… :slight_smile: Per me “all” sa
un po’ di vechi
incubi con javascript-in-IE!

io apprezzo all per la similarità con le junction in
perl6, adesso aspetto #any, #some & #none :slight_smile:

  ___________________________________________________________

Yahoo! Answers - Got a question? Someone out there knows the answer. Try
it
now.
http://uk.answers.yahoo.com/

On May 15, 2007, at 12:16 AM, chiaro scuro wrote:

fatemi sapere che ne pensate, perchè ne vado orgoglioso :slight_smile:

in pratica è codice che vi permette di scrivere cose tipo:
people.all.capitalize

invece di:
people.map{|p| p.capitalize}

Nel caso di metodi senza argomenti mi sembra piuttosto elegante anche
la soluzione di ActiveSupport che
sfrutta una “gabola” di Ruby:

people.map(&:capitalize)
people.each(&:capitalize!)

la sintassi &qualcosa invoca il metodo to_proc su ‘qualcosa’;
ActiveSupport definisce #to_proc come (se non ricordo male):

class Symbol
def to_proc
lambda { |arg| arg.send(self) }
end
end

e il gioco e’ fatto.


Stefano C.
[email protected]

Bravo chiaro! Bel pezzo!

jek

On 5/15/07, Stefano C. [email protected] wrote:

Nel caso di metodi senza argomenti mi sembra piuttosto elegante anche
la soluzione di ActiveSupport che
sfrutta una “gabola” di Ruby:

people.map(&:capitalize)
people.each(&:capitalize!)

apprezzo l’implementazione concisa, ma non mi fà impazzire l’uso di &

glifo per glifo mi intriga invece people.*.capitalize

glifo per glifo mi intriga invece people.*.capitalize

Geniale questa… o ancora questa: people*.capitalize, un po’ come fa
_why in hpricot con #search che ha l’alias “/” (Chissà come lo fa? Non
ho guardato, ma un giorno di questi…)

:slight_smile:

On 5/15/07, david [email protected] wrote:

Complimenti a Chiaroscuro per l’articolo, piacevole da leggere :slight_smile:

_why in hpricot con #search che ha l’alias “/” (Chissà come lo fa? Non
ho guardato, ma un giorno di questi…)

Molto banalmente usa alias_method, se è questo che ti stai chiedendo:

alias_method :/, :search

Hmm. Ma come fa a fare a meno del punto?

voglio dire: doc./ e doc.search è un conto, ma doc/ e doc.search ?

On 5/15/07, chiaro scuro [email protected] wrote:

apprezzo l’implementazione concisa, ma non mi fà impazzire l’uso di &

Io potrei però “abbellirlo”
così:
class Array
def all(sym)
map {|el| el.send sym }
end
end

%w(a b c).all :capitalize
=> [“A”, “B”, “C”]

On 5/15/07, david [email protected] wrote:

Hmm. Ma come fa a fare a meno del punto?
voglio dire: doc./ e doc.search è un conto, ma doc/ e doc.search ?

Riesce a fare a meno del punto perché in realtà quel / è un operatore.
In ruby è possibile (ri)definire il comportamento di ogni operatore,
in questo caso _why lo ha fatto per alcune classi di hpricot (vedi
Elements) tramite alias_method rendendo quindi / un alias del metodo
search.

Il concetto è lo stesso che ti permette di fare [‘a’, ‘b’, ‘c’] +
[‘d’, ‘e’, ‘f’] e ottenere come risultato [‘a’, ‘b’, ‘c’, ‘d’, ‘e’,
‘f’], solo che _why ha usato / in maniera un po’ più fantasiosa (come
del resto gli si addice perfettamente :))

— Daniele A. [email protected] wrote:

ogni operatore,
in questo caso _why lo ha fatto per alcune classi di
hpricot (vedi
Elements) tramite alias_method rendendo quindi / un
alias del metodo
search.

piccola aggiunta, e mi ricollego al discorso
originale: l’u8nica differenza tra metodi e operatori
è il modo in cui vengono trattati dal parser, il che,
per quel che so io, rende possibile scrivere

people.*.foo #il punto forza il parsing come metodo

ma impossibile

people*.foo #il parser si aspetta l’argomento per *

  ___________________________________________________________

Yahoo! Answers - Got a question? Someone out there knows the answer. Try
it
now.
http://uk.answers.yahoo.com/

On 5/15/07, Daniele A. [email protected] wrote:

Il concetto è lo stesso che ti permette di fare [‘a’, ‘b’, ‘c’] +
[‘d’, ‘e’, ‘f’] e ottenere come risultato [‘a’, ‘b’, ‘c’, ‘d’, ‘e’,
‘f’], solo che _why ha usato / in maniera un po’ più fantasiosa (come
del resto gli si addice perfettamente :))

_why ha fatto una cosa simile anche nel suo “Dwemthy’s Array”…

little boomerang

def ^( enemy )
fight( enemy, 13 )
end

the hero’s sword is unlimited!!

def /( enemy )
fight( enemy, rand( 4 + ( ( enemy.life % 10 ) ** 2 ) ) )
end

lettuce will build your strength and extra ruffage

will fly in the face of your opponent!!

def %( enemy )
lettuce = rand( charisma )
puts “[Healthy lettuce gives you #{ lettuce } life points!!]”
@life += lettuce
fight( enemy, 0 )
end

bombs, but you only have three!!

def *( enemy )
if @bombs.zero?
puts “[UHN!! You’re out of bombs!!]”
return
end
@bombs -= 1
fight( enemy, 86 )
end

Molto grazioso lo “/” come spada, la * come “bombe”… :slight_smile:

M

Ho come l’idea che _why andrà (dovrebbe andare?) alla storia alla pari
di Mozart. È incredibilmente geniale. Sembra che non riesca a scrivere
nulla che non mi faccia ridere, codice o commenti o blogpost o libri.

(Scusate la banalità. Dire che _why è bravo è come dire che il governo è
ladro: vero ma oh! quanto banale e già sentito… però è bravo!)

:slight_smile:

Peccato per il “people*”, ma anche “people.*” è ok immagino.

Matteo V. wrote:

search.
fight( enemy, 13 )
lettuce = rand( charisma )
end
http://lists.ruby-it.org/mailman/listinfo/ml


“Draw, you rogue, for though it be night, yet the moon shines. I’ll make
a sop o’ the moonshine of you. You whoreson cullionly barbermonger,
draw!” - King Lear, Act II, scene 2

This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

| Privacy Policy | Terms of Service | Remote Ruby Jobs