Consumer<MyClass> consumer = (x) -> {}
Takie coś znalazłem w kodzie akademickim na coursera.org. Nawet nie wiem jak to wygooglać.
Wyrażenie lambda.
wiem co to są wyrażenia lambda, ale x -> {}
co to robi?
Przed chwila nie wiedziałeś jak wyszukać więc dałem ci słowa kluczowe. To co podałeś przyjmuje argument i nic z nim nie robi.
Nic, nie ma to za bardzo sensu (poza pokazaniem jak wygląda lambda expression) :D
{}
to pusty blok. Napiszę go ładniej:
{
}
teraz chyba bardziej widać co robi.
Wklejam cały fragment:
public List<GeographicPoint> dijkstra(GeographicPoint start, GeographicPoint goal) {
// Dummy variable for calling the search algorithms
// You do not need to change this method.
Consumer<GeographicPoint> temp = (x) -> {}; // WTF ?!
return dijkstra(start, goal, temp);
}
public List<GeographicPoint> dijkstra(GeographicPoint start, GeographicPoint goal, Consumer<GeographicPoint> nodeSearched)
{
// TODO: Implement this method in WEEK 3
nodeSearched.accept(next.getLocation()); // WTF ?!
return null;
}
Te dwa zapisy są sobie rownoznaczne:
//1
Consumer<GeographicPoint> temp = (x) -> {}; // WTF ?!
//2
Consumer<GeographicPoint> consumer = new Consumer<GeographicPoint>() {
@Override
public void accept(GeographicPoint s) {
}
};
Wyrażenie lambda… jeszcze powtórzone 100 razy nie zmieni tego wątku.
W czym rzeczy. Musisz przekazać jako parametr obiekt typu Consumer
. Masz dwie opcje. Pierwsza to przekazać null
i ryzykować, że coś gdzieś wybuchnie NPE. Druga to przekazanie „pustego” konsumenta, czyli właśnie (x)->{}
. Jedynym zadaniem tego obiektu jest „nie bycie nullem”.
Koziołek napisał(a):
Wyrażenie lambda… jeszcze powtórzone 100 razy nie zmieni tego wątku.
W czym rzeczy. Musisz przekazać jako parametr obiekt typu
Consumer
. Masz dwie opcje. Pierwsza to przekazaćnull
i ryzykować, że coś gdzieś wybuchnie NPE. Druga to przekazanie „pustego” konsumenta, czyli właśnie(x)->{}
. Jedynym zadaniem tego obiektu jest „nie bycie nullem”.
Albo raczej bycie uniwersalną wszystkożerną swinią pożerającą wszystko. Chociaż nie wygląda jak świnia - szkoda.
Powino być tak ( ´(00)ˋ )
ale to pewnie w Scali ktoś już zrobił.
To jest jądro ciemności. Coś jak w centrum naszej galaktyki.
https://blenderartists.org/forum/attachment.php?attachmentid=349467&d=1418567882