Ciekawy przewodnik po Ruby i TDD - rubykoans.com

Polecam http://rubykoans.com/. Dobra rzecz, aby zacząć naukę Ruby i od razu nabierać pewnych pozytwnych nawyków (TDD). Dobra rzecz, aby przypomnieć sobie niektóre niuanse naszego ulubionego języka.

first_name, = ["John", "Doe"] p first_name #=> ?

tak jak napisałem w mailu do Ciebie, taka składnia jest ble, fu i zmyli nie jednego programistę… ale to tylko moje zdanie ;).

first_name, last_name = ["John", "Doe"]

ma już większy sens.

Moje też.
Takie sztuczki zemszczą się na samym autorze jak tylko tydzień później będzie usiłował poprawić jakiś błąd w swoim kodzie.

Podoba/nie podoba się rubykoans? Co sądzicie o takim sposobie poznawania Ruby? Może znacie inne tego typu kursy? Dobrze czasem mieć pod ręką parę sprawdzonych linków dla początkujących.

PS Kod wrzuciłem jako taki lekki teaser. :slight_smile: Osobiście w takim wypadku wolę

first_name = ["John", "Doe"].first

niż tworzyć kolejną zmienną lokalną.

Moje propozycje

first_name = ["John", "Doe"].clone.shift first_name = ["John", "Doe"].clone.reverse.pop first_name = "John" # najbardziej mi się podoba

[quote=paneq]Moje propozycje

first_name = ["John", "Doe"].clone.shift first_name = ["John", "Doe"].clone.reverse.pop first_name = "John" # najbardziej mi się podoba
[/quote]
Ale po co w ogóle takie rozwiązanie? Jak mamy przypisanie tego rodzaju, to najbardziej przejrzyście jest osobno przypisać imię, osobno nazwisko.
Konstrukcje typu a,b,c = cośtam, mają uzasadnienie, jeśli dostajemy tablicę, z której coś tam sobie od razu chcemy wyodrębnić, np.

first_name, last_name = name.split(" ")

W innych przypadkach to tylko zaciemnianie idei programisty - coś do czego Rubi zdecydowanie nie został stworzony. Znacznie lepiej można to zrobić w C i assemblerze :wink: