sobota, 20 grudnia 2008

Prostota i elegancja Ruby'ego

Załóżmy, że potrzebujemy metodę, która na podstawie otrzymanej kolekcji klientów zwróci nam kolekcję ich nazwisk.


Java:

public Collection<String> surnames(Collection<Customer> customers) {
Collection<String> surnames = new ArrayList<String>(customers.size());
for (Customer customer : customers) {
surnames.add(customer.getSurname());
}
return surnames;
}

Ruby:

def surnames(customers)
customers.collect {|customer| customer.surname}
end


Czyż to nie ładniejsze i przyjemniejsze w pisaniu i czytaniu? :)

4 komentarze:

wojek pisze...
Ten komentarz został usunięty przez autora.
Unknown pisze...

Tylko czekać przykładu w Groovy...Już nie mogę się doczekać. ;-)

Jacek
Notatnik Projektanta Java EE

Michał Trzcinka pisze...

Racja, w Rubym to trochę czarowanie, ale kiedy pozna się podstawy tych czarów to pisanie skomplikowanych rzeczy staje się proste i przyjemne :)

Co do przykładu w Groovy... zaraz wrzucę :)

Anonimowy pisze...

Pitu pitu...
Od czego mamy biblioteki, w których dla Javy jest wszystko:

http://commons.apache.org/collections/apidocs/org/apache/commons/collections/CollectionUtils.html#collect(java.util.Collection, org.apache.commons.collections.Transformer)

+ http://commons.apache.org/beanutils/commons-beanutils-1.7.0/docs/bean-collections/org/apache/commons/beanutils/BeanToPropertyValueTransformer.html

i wszystko robimy w jednej linijce.