Starší komentáře ke článku: Ruby po kapkách (4.) - podmínky a cykly

Zpět na článek | Úvodní stránka Interval.cz

Avatar

Autor komentáře: Kája

Datum vložení: 20.2.2009 12:20:57

Sleduji tento seriál zejména proto, že mě zajímá, jaký je přístup k řešení "programátorských úloh" v tomto jazyce oproti jiným. Zatím se mi zdá, že se sice pamatovalo na to, aby si člověk mohl vybrat, ale že na tom trpí přehlednost, třeba jenom přidat k if ještě unless je snad už trochu zbytečné :-D

Avatar

Autor komentáře: Dalibor Šrámek

Datum vložení: 20.2.2009 13:19:47

Na rozdíly oproti jiným jazykům ještě chvíli vydržte. Přeci jen tohle jsou základy a návrh Ruby nebyl o tom vymýšlet nové paradigma, ale namíchat ten správný blend Perlu, Lispu a Smalltalku. Souhlasím, že opačné formy podmínek a cyklů jsou spíš nadbytečné a v praxi se téměř nepoužívají. Ozývají se i hlasy, aby byly z jazyka vyřazeny.

Avatar

Autor komentáře: Timy

Datum vložení: 23.2.2009 23:03:18

Obávám se, že se to správně namíchat nepovedlo. Unless tak jak je zde definovaný je opravdu na dvě věci a jazyk vyloženě znepřehledňuje. V Lispu se when a unless používají výhradně v případě, že podmínka nemá else větev. Pak už to smysl má -- v současných jazycích mi vadí, že nic jako when (funguje stejně jako if, jen nemá else větev) nebo unless neexistuje a jede se jen přes if. Přijde mi, že je trochu zmatené, když if někdy má else větev a někdy ne. Použiji-li when, říkám tím zároveň, že else větev neexistuje. Stejně tak unless. Aby měl unless else větev je opravdu dost cypské.

Avatar

Autor komentáře: mikrom

Datum vložení: 1.6.2009 10:25:09

Mne naopak sa to zda chaoticke v LISPe: Naco je tam, okrem COND este aj IF aj WHEN, ked staci COND. V nijakom pripade sa mi nezda Ruby spatne namiesany Lisp. Podla mna, v Ruby sa programuje omnoho produktivnejsie. Jedine co sa mi na Ruby zatial trochu nepaci, je ze blok kodu odovzdavany iteratoru sa da uzavriet bud medzi [b]do..end[/b], tak aj medzi C-ckove zatvorky [b]{..}[/b], ale bloky kodu pri cykloch musia byt uzavrete len medzi [b]do..end[/b]. Keby bol Matz namiesto [b]do..end[/b] radsej vsade pouzil iba C-ckovu syntax [b]{..}[/b], t.j. keby v Ruby fungovalo napriklad toto [b] while podmienka { .. } [/b] tak podla mna by Ruby nemal chybu.

Avatar

Autor komentáře: karmi

Datum vložení: 2.3.2009 11:59:35

[i]opačné formy podmínek a cyklů jsou spíš nadbytečné a v praxi se téměř nepoužívají[/i] Opravdu? Idiom s podmínkou jako modifikátorem (narychlo): [code] display_login_box unless @user.logged_in? [code] je naopak v Ruby používaný dost a je to jedna z klíčových vlastností syntaxe. (Viz např. http://books.google.com/books?id=jcUbTcr5XWwC&pg=PA122&lpg=PA122#PPA121,M1) Hezký Ruby idiom je např. také: [code] if user = User.find_by_name('Honza') puts user.fullname + ' ma ' + user.score 'bodu' else puts "Uzivatel nenalezen" end [/code] Karel

Avatar

Autor komentáře: Michal

Datum vložení: 20.2.2009 18:26:47

Cau, mohl byste prosím vždy vypsat správné řešení úkolu z minulého dílu. Jsem amatér. Dík

Avatar

Autor komentáře: Dalibor Šrámek

Datum vložení: 21.2.2009 12:37:02

Řešení bude. Přemýšlím, jak úkoly a řešení začlenit do struktury seriálu.

Zpět na článek | Úvodní stránka Interval.cz