D: Reduzieren mit Delegaten

8

Dieser Ausschnitt aus Pseudocode funktioniert gut:

%Vor%

Tatsächlich erscheint es in mehreren Beispielen und Dokumenten.

Das funktioniert jedoch nicht, und ich kann nicht herausfinden warum:

%Vor%

Ich erhalte immer den folgenden Fehler:

%Vor%

Ich dachte, es könnte ein Fehler in D sein, aber vielleicht habe ich etwas verpasst ...?

(Mein tatsächlicher Delegat ist komplexer, ich habe den Code auf ein minimales Beispiel reduziert, das das Problem demonstriert).

    
Amir Abiri 30.08.2014, 09:39
quelle

1 Antwort

12

Unter Verwendung von (a, b) => { return a + b; } ist das Lambda eine Funktion / Delegat, die eine Funktion / einen Delegaten zurückgibt und nicht das Ergebnis der Operation a + b . Sie sollten (a, b) { return a + b; } ohne den Operator => lambda verwenden, damit er sich wie gewünscht verhält.

Dies kann mit dem folgenden Code angezeigt werden:

%Vor%

Ihr Code sollte also RANGE.reduce!((a, b) { return a + b; }) ;

lauten     
yaz 30.08.2014, 12:03
quelle

Tags und Links