Online IDE pro Javu s možností debugování

gl

Re:Online IDE pro Javu s možností debugování
« Odpověď #330 kdy: 09. 08. 2016, 17:27:32 »
Tak to jsi pochopil spatne. Muzes pouzit libovolnou lambdu.

Kód: [Vybrat]
o.flatMap(a -> foo.bar(1, a, 2))

Je to kód navíc a foo.bar stále musí vracet Optional.


Re:Online IDE pro Javu s možností debugování
« Odpověď #331 kdy: 09. 08. 2016, 17:29:20 »
Jestli jsem to správně pochopil, tak flatMap s Optional funguje jen pro metody bez parametru, které vrací Optional.
Jen pro metody s jedním parametrem, které vrací Optional. Co se vám na tom nezdá? Pokud máte funkci, která nevrací Optional, použijete map.

Re:Online IDE pro Javu s možností debugování
« Odpověď #332 kdy: 09. 08. 2016, 17:30:30 »
Tak to jsi pochopil spatne. Muzes pouzit libovolnou lambdu.

Kód: [Vybrat]
o.flatMap(a -> foo.bar(1, a, 2))

Je to kód navíc a foo.bar stále musí vracet Optional.

Hele, a jak by sis to predstavoval s otaznicky v tomhle pripade, aby to bylo kratsi?

Jinak pokud ti foo.bar nevraci Optional, tak pouzijes map()

RTFM!

Re:Online IDE pro Javu s možností debugování
« Odpověď #333 kdy: 09. 08. 2016, 17:31:37 »
Je to kód navíc a foo.bar stále musí vracet Optional.

Dale bych na obhajobu tohohle kodu proti chytani NPE rad poznamenal, ze to bude fungovat. Coz tvuj napad nebude.

gl

Re:Online IDE pro Javu s možností debugování
« Odpověď #334 kdy: 09. 08. 2016, 17:36:16 »
Tak to jsi pochopil spatne. Muzes pouzit libovolnou lambdu.

Kód: [Vybrat]
o.flatMap(a -> foo.bar(1, a, 2))

Je to kód navíc a foo.bar stále musí vracet Optional.

Hele, a jak by sis to predstavoval s otaznicky v tomhle pripade, aby to bylo kratsi?

Jinak pokud ti foo.bar nevraci Optional, tak pouzijes map()

RTFM!

Otazníčky jsou použitelné spíš pro případ

Kód: [Vybrat]
o.flatMap(a -> a.bar(1, 2))
Kód: [Vybrat]
o.flatMap(a -> foo.bar(1, a, 2))totiž vůbec není řetězení metod. Stačilo by jednoduše vložit volání předchozí funkce na místo parametru.




Re:Online IDE pro Javu s možností debugování
« Odpověď #335 kdy: 09. 08. 2016, 17:39:57 »
Kód: [Vybrat]
o.flatMap(a -> foo.bar(1, a, 2))totiž vůbec není řetězení metod. Stačilo by jednoduše vložit volání předchozí funkce na místo parametru.

Chtel jsi priklad neceho slozitejsiho, tak jsi ho dostal.

A pochopitelne v tomhle pripade nestaci vlozit volani predchozi funkde na misto parametru, protoze ta
- vraci Optional, coz ten parametr neni
- neresis tim None

Re:Online IDE pro Javu s možností debugování
« Odpověď #336 kdy: 09. 08. 2016, 17:43:59 »
Aby to nevyznelo nejak ve spatnem - ten otaznickovy syntakticky cukr se mi celkem libi (prestozesi nejsem uplne jisty, jak by se mel v Jave chovat, protoze tam je jak null tak Optional), ale co se mi rozhodne nelibi jsou nesmyslne navrhy typu chytani NPE.

S Optional je to tak, ze si je potreba sednout, v klidu si projit dokumentaci, pripadne nejake blogposty a pak je pouzivat nejak rozumne. Ale to nejde, dokud clovek nejdriv neudela domaci ukoly a neujasni si zaklady.

gl

Re:Online IDE pro Javu s možností debugování
« Odpověď #337 kdy: 09. 08. 2016, 17:55:42 »
Chtel jsi priklad neceho slozitejsiho, tak jsi ho dostal.

A pochopitelne v tomhle pripade nestaci vlozit volani predchozi funkde na misto parametru, protoze ta
- vraci Optional, coz ten parametr neni
- neresis tim None

Mluvil jsem o situaci bez použití Optional.

Celkově mi Optional přijde jako zbytečná abstrakce, která nic neusnadní. Sám jsi psal, že jde pomocí map řetězit i funkce, které Optional nevrací.

gl

Re:Online IDE pro Javu s možností debugování
« Odpověď #338 kdy: 09. 08. 2016, 17:58:08 »
prestozesi nejsem uplne jisty, jak by se mel v Jave chovat, protoze tam je jak null tak Optional

Další důvod proč nepoužívat Optional.

Re:Online IDE pro Javu s možností debugování
« Odpověď #339 kdy: 09. 08. 2016, 17:58:53 »
prestozesi nejsem uplne jisty, jak by se mel v Jave chovat, protoze tam je jak null tak Optional

Další důvod proč nepoužívat Optional.

A na to jsi prisel jak?

Re:Online IDE pro Javu s možností debugování
« Odpověď #340 kdy: 09. 08. 2016, 18:03:01 »
Mluvil jsem o situaci bez použití Optional.

Celkově mi Optional přijde jako zbytečná abstrakce, která nic neusnadní. Sám jsi psal, že jde pomocí map řetězit i funkce, které Optional nevrací.

Ano, muzes pouzit map, flatMap (a dalsi metody, jeste jednou ti rikam RTFM), ktere bys uz otaznicky nenahradil.

Ne, neni to zbytecna abstrakce. Mas moznost napsat kod, ktery funguje (coz tvuj navrh reseni s catchem neni, ten je naprosto spatny) a nemusis ho prospikovat ify.

gl

Re:Online IDE pro Javu s možností debugování
« Odpověď #341 kdy: 09. 08. 2016, 18:36:38 »
prestozesi nejsem uplne jisty, jak by se mel v Jave chovat, protoze tam je jak null tak Optional

Další důvod proč nepoužívat Optional.

A na to jsi prisel jak?

Už se v těchto situacích používá null případně nějaké NullObjekty. Optional nebude například fungovat v Clojure při použití some-> a some->>. Prázdný Optional se vyhodnocuje jako True.

Re:Online IDE pro Javu s možností debugování
« Odpověď #342 kdy: 09. 08. 2016, 18:51:13 »
Už se v těchto situacích používá null případně nějaké NullObjekty. Optional nebude například fungovat v Clojure při použití some-> a some->>. Prázdný Optional se vyhodnocuje jako True.

NullObjekty je duplicita v kodu a nutnost vytvaret zbytecne hierarchie *). Null je nejdrazsi chyba v historii pocitacu. Tohle je (pro mnoho pripadu, samozrejme ne pro uplne kazdou situaci) vyborne reseni - kompakni a bezpecne.

Ze to nejde pouzit v clojure mi zilu netrha. Pokud chteji, aby jim to fungovalo, tak at si to v clojure opravi...


*) tim nerikam, ze nemaji smysl. Nekdy jo. Ale situaci, kdy se moc nehodi, je strasne moc.

gl

Re:Online IDE pro Javu s možností debugování
« Odpověď #343 kdy: 09. 08. 2016, 18:55:47 »
Už se v těchto situacích používá null případně nějaké NullObjekty. Optional nebude například fungovat v Clojure při použití some-> a some->>. Prázdný Optional se vyhodnocuje jako True.

NullObjekty je duplicita v kodu a nutnost vytvaret zbytecne hierarchie *). Null je nejdrazsi chyba v historii pocitacu. Tohle je (pro mnoho pripadu, samozrejme ne pro uplne kazdou situaci) vyborne reseni - kompakni a bezpecne.

Ze to nejde pouzit v clojure mi zilu netrha. Pokud chteji, aby jim to fungovalo, tak at si to v clojure opravi...


*) tim nerikam, ze nemaji smysl. Nekdy jo. Ale situaci, kdy se moc nehodi, je strasne moc.

V čem je to bezpečnější než null?

Re:Online IDE pro Javu s možností debugování
« Odpověď #344 kdy: 09. 08. 2016, 18:59:01 »
V čem je to bezpečnější než null?

Ty si delas srandu?

Ze neco muze a nemusi byt je diky Optional explicitni. Vznika jasne patterny, kde je pouziti spravne a kde je prinejmensim podezrele.