Co znaczy (x) -> {}

0

Consumer<MyClass> consumer = (x) -> {}
Takie coś znalazłem w kodzie akademickim na coursera.org. Nawet nie wiem jak to wygooglać.

0

Wyrażenie lambda.

0

wiem co to są wyrażenia lambda, ale x -> {} co to robi?

0

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.

0

Nic, nie ma to za bardzo sensu (poza pokazaniem jak wygląda lambda expression) :D

1

{} to pusty blok. Napiszę go ładniej:

{
}

teraz chyba bardziej widać co robi.

0

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;
	}
0

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) {
    }
};
2

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”.

0
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ł.

0

To jest jądro ciemności. Coś jak w centrum naszej galaktyki.

https://blenderartists.org/forum/attachment.php?attachmentid=349467&d=1418567882

1 użytkowników online, w tym zalogowanych: 0, gości: 1