Monády v Javě

Re:Monády v Javě
« Odpověď #15 kdy: 09. 11. 2016, 23:03:53 »


Mysteriozni Z.

Re:Monády v Javě
« Odpověď #16 kdy: 09. 11. 2016, 23:07:24 »
Ok, tak já to ukončím. Borec jsem tady já. File::isFile, resp. X::method, kompilátor nahradí lambdou: x  -> x.method

Gratuluji. Bylo to tak těžké říct? Asi jo, protože to tu ani Satai Nekola neví.

DK

Re:Monády v Javě
« Odpověď #17 kdy: 09. 11. 2016, 23:08:20 »
Volas metodu isFile z tridy File, jelikoz je to metoda nestaticka, aplikuje se na objekt daneho streamu. Jelikoz je objekt typu File, tak to projde, jinak by kompilator zahlasil chybu.

Ber to tak, ze kompilator si to interne prepise na f -> f.isFile() (je to predikat, muze se zapsat nekolika zpusoby


// nez jsem to dopsal, pan Mysteriozni si odpovedel... nebylo, rikali ti to vsichni od zacatku

Mysteriozni Z.

Re:Monády v Javě
« Odpověď #18 kdy: 09. 11. 2016, 23:11:29 »
Volas metodu isFile z tridy File, jelikoz je to metoda nestaticka, aplikuje se na objekt daneho streamu. Jelikoz je objekt typu File, tak to projde, jinak by kompilator zahlasil chybu.

Ber to tak, ze kompilator si to interne prepise na f -> f.isFile() (je to predikat, muze se zapsat nekolika zpusoby


// nez jsem to dopsal, pan Mysteriozni si odpovedel... nebylo, rikali ti to vsichni od zacatku

Ukaž mi jediný příspěvek, ve kterém někdo napsal:

File::isFile ti kompilátor přepíše na file -> file.isFile()

a jsi možná jsi taky borec jako já.

Mysteriozni Z.

Re:Monády v Javě
« Odpověď #19 kdy: 09. 11. 2016, 23:15:53 »
Jednoduchá odpověď, necelých 10 slov. Tak buďto to tady nikdo nevěděl a nebo podle DK mi to všichni říkali, což z nich ovšem dělá solidní autisty že to neumí sdělit jasně a stručně. Zase porod na půl hodiny se tu na root něco dozvědět.


Re:Monády v Javě
« Odpověď #20 kdy: 09. 11. 2016, 23:20:49 »
Ok, tak já to ukončím. Borec jsem tady já. File::isFile, resp. X::method, kompilátor nahradí lambdou: x  -> x.method

Gratuluji. Bylo to tak těžké říct? Asi jo, protože to tu ani Satai Nekola neví.

Compiler nic neprepise,  tyhle vyrazy jsou ta sama lambda.

DK

Re:Monády v Javě
« Odpověď #21 kdy: 10. 11. 2016, 07:10:22 »
Popsal to dustin hned ve druhem prispevku, nebo pecrom ve tretim.

presne tak, tim ze to premapujes na Stream<File>, tak pak u toho filtru muzes pouzit (File f) -> f.isFile() , nebo f -> f.isFile() NEBO File::isFile, protoze se to isFile zavola na tom prvku toho streamu.

lanka

Re:Monády v Javě
« Odpověď #22 kdy: 10. 11. 2016, 08:55:26 »
Jednoduchá odpověď, necelých 10 slov. Tak buďto to tady nikdo nevěděl a nebo podle DK mi to všichni říkali, což z nich ovšem dělá solidní autisty že to neumí sdělit jasně a stručně. Zase porod na půl hodiny se tu na root něco dozvědět.

Kdybys nebyl liny a precetl si libovolny tutorial, vedel bys to sam a nemusel by ses doprosovat na rootu. Zes to nepochopil neznamena, ze ostatni to neumi vysvetlit, ale ze mas dlouhe vedeni.

podlesh

Re:Monády v Javě
« Odpověď #23 kdy: 10. 11. 2016, 09:48:33 »
Pro ty kteří v tom pořád nemají jasno a nepřečetli si https://docs.oracle.com/javase/tutorial/java/javaOO/methodreferences.html:
Pokud se použije syntaxe SomeClass::nonStaticMethod, tak výsledná lambda má vždy o jeden parametr navíc - jako první je instance té třídy (tedy efektivně this). To znamená že File::isFile má ve výsledku jeden parametr, typu File.

Kolemjdoucí

Re:Monády v Javě
« Odpověď #24 kdy: 10. 11. 2016, 09:54:25 »
Pro ty kteří v tom pořád nemají jasno a nepřečetli si https://docs.oracle.com/javase/tutorial/java/javaOO/methodreferences.html:
Pokud se použije syntaxe SomeClass::nonStaticMethod, tak výsledná lambda má vždy o jeden parametr navíc - jako první je instance té třídy (tedy efektivně this). To znamená že File::isFile má ve výsledku jeden parametr, typu File.

Nebo obecněji: vždy pokud se volá nestatická metoda tak ta metoda má o jeden parametr navíc (this).