Any fool can make things bigger, more complex, and more violent. It takes a touch of genius and a lot of courage to move in the opposite direction. Albert Einstein

o Ruby

Nowości i zmiany w Ruby 1.9 #5 - bloki, domknięcia, nowa lambda

10 komentarzy | Kategorie: Ruby, Techblog | trackback
Tagi:
ruby 1.9 changes approved - logo

Wpis ten jest jedną z części cyklu pt "Nowości i zmiany w Ruby 1.9". Pełną listę wpisów znajdziesz pod adresem http://radarek.jogger.pl/2008/11/30/nowosci-i-zmiany-w-ruby-1-9/.

Kontynuując serię wpisów o nowościach w ruby 1.9 tym razem opiszę zmiany dotyczące bloków, domknięć oraz nowej składni lambdy.

Zacznijmy od nowej składni dla lamby, za pomocą operatora ->. Przykład pokazuje tworzenie dwóch identycznych domknięć za pomocą starego sposobu i nowego.

mul2_first  = lambda {|x| x * 2 }
mul2_second = ->(x) { x * 2 }

# można także ominąć () ale w ten sposób raczej pogarszamy czytelność
mul2_third  = -> x { x * 2 }

Jak widać nowa składnia pozwala na bardziej zwięzłe tworzenie domknięć, chociaż można także popsuć czytelność, np. tak:

foo(:mult => -> x, y = 2 { x * y })
# z nową składnią Hashy i nawiasami dużo lepiej
foo(mult: ->(x, y = 2) { x * y })

Zatem po raz kolejny trzeba podkreślić, że to od Ciebie zależy jak bardzo czytelny będzie kod.

Czytaj dalej...

Nowości i zmiany w Ruby 1.9 #3 - zmiany odnośnie argumentów metod

2 komentarze | Kategorie: Ruby, Techblog | trackback
Tagi:
ruby 1.9 changes approved - logo

Wpis ten jest jedną z części cyklu pt "Nowości i zmiany w Ruby 1.9". Pełną listę wpisów znajdziesz pod adresem http://radarek.jogger.pl/2008/11/30/nowosci-i-zmiany-w-ruby-1-9/.

Kontynuując mały cykl tym razem chciałbym opisać zmianę dotyczącą parametrów metod. Do tej pory deklaracja metody wyglądała następująco: def fun(r1, r2, .., rm, o1=v1, o2=v2, ..., on=vn[, *rest][, &block]).

Suchy zapis jest często ciężki w odbiorze, zatem opisując słownie mamy: lista parametrów wymaganych (może być pusta), lista parametrów opcjonalnych (może być pusta), opcjonalny argument zbierający pozostałe parametry, opcjonalny parametr bloku. Prezentuje to przykładowy kod:

def foo(a, b = 1, *rest, &block)
  p [a, b, rest, block]
end

foo(10)
foo(10, 20)
foo(10, 20, 30)

Czytaj dalej...

Nowości i zmiany w Ruby 1.9 #2 - nowa składnia Hasha

5 komentarzy | Kategorie: Ruby, Techblog | trackback
Tagi:
ruby 1.9 changes approved - logo

Wpis ten jest jedną z części cyklu pt "Nowości i zmiany w Ruby 1.9". Pełną listę wpisów znajdziesz pod adresem http://radarek.jogger.pl/2008/11/30/nowosci-i-zmiany-w-ruby-1-9/.

Tym razem chciałbym pokazać Wam nową zmianę w składni języka, która dotyczy także Hasha. Zmiana ta dotyczy nowej składni dla literału hasha, którego kluczami są symbole. Do tej pory taki hash definiowaliśmy w następujący sposób:

h = {:foo => 1, :bar => 2}
p h
# => {:foo=>1, :bar=>2}

Od wersji 1.9 można to zrobić trochę inaczej

h = {foo: 1, bar: 2}
p h
# => {:foo=>1, :bar=>2}

Czytaj dalej...

Nowości i zmiany w Ruby 1.9 #1 - ordered Hash

16 komentarzy | Kategorie: Ruby, Techblog | trackback
Tagi:
ruby 1.9 changes approved - logo

Wpis ten jest jedną z części cyklu pt "Nowości i zmiany w Ruby 1.9". Pełną listę wpisów znajdziesz pod adresem http://radarek.jogger.pl/2008/11/30/nowosci-i-zmiany-w-ruby-1-9/.

Od wersji 1.9 Ruby zachowuje kolejność elementów w Hashu ("ordered Hash", czyli Hash zachowujący kolejność). Oznacza to, że iteracja po elementach hasha następuje dokładnie w takiej samej kolejności w jakiej były wstawiane elementy. Podkreślam słowo "wstawiane", co nie ma związku z sortowaniem kluczy (np. leksykograficznie).

Czytaj dalej...

Nowości i zmiany w Ruby 1.9

Brak komentarzy | Kategorie: Ruby | trackback
Tagi:

Blisko rok temu pisałem o zmianach jakie zaszły w wersji 1.9 Rubiego. W kilku następnych wpisach opiszę bardziej szczegółowo najważniejsze z nich. Prócz samego pokazania na czym dana zmiana/nowość polega postaram się także pokazać jakiś użyteczny kod, który wykorzystuje nowy "ficzer". Jak zwykle będą osoby, które pokochają nowe elementy języka, a także takie, które będą kręcić nosem. Tym bardziej, że o niektórych modyfikacjach języka można powiedzieć, że są kontrowersyjne (a przynajmniej po pierwszym spojrzeniu). W takich wypadkach opiszę także jak należy prawidłowo (co oczywiście będzie tylko moim punktem widzenia) używać konstrukcji lub czego się wystrzegać. Innymi słowy: to czego nie znajdziecie w "suchym" manualu (tudzież Changelogu).

Czytaj dalej...