public static Func Curry ( this Func f)
{
return a => b => f(a, b);
}
< /code>
... wurde vom Compiler in dies übersetzt: < /p>
public static Func Curry(this Func f)
{
first local = new first();
local.function = f;
return new Func(local.Curry);
}
private sealed class first
{
private sealed class second
{
public first ancestor;
public T1 firstParameter;
public TOut Curry(T2 secondParameter)
{
return ancestor.function(firstParameter, secondParameter);
}
}
public Func function;
public Func Curry(T1 firstParameter)
{
second local = new second();
local.ancestor = this;
local.firstParameter = firstParameter;
return new Func(local.Curry);
}
}
< /code>
Die zweite Klasse ist also verschachtelt und die erste Klasse ist für die Müllsammlung nicht verfügbar, während wir Delegate verwenden, die auf Second.curry verweisen. Gleichzeitig ist alles, was wir in der ersten Klasse brauchen, [b] Funktion [/b]. Vielleicht können wir es (Delegierter) in die zweite Klasse kopieren und dann könnte die erste Klasse gesammelt werden? Ja, wir sollten dann auch die zweite Klasse nicht abnestet machen, aber es scheint, dass das in Ordnung ist. Wie ich weiß, werden die Delegierten nach Wert "kopiert", damit ich vorschlagen kann, dass es ziemlich langsam ist, aber gleichzeitig kopieren wir [b] FirstParameter [/b]?! Vielleicht könnte jemand erklären, warum der Compiler all diese Dinge tut?)
Ich spreche über so etwas: < /p>
private sealed class first
{
public Func function;
public Func Curry(T1 firstParameter)
{
second local = new second();
local.function = function;
local.firstParameter = firstParameter;
return new Func(local.Curry);
}
}
public sealed class second
{
public T1 firstParameter;
public Func function;
public TOut Curry(T2 secondParameter)
{
return function(firstParameter, secondParameter);
}
}
Ich habe Y -Kombinator (mit C# 5.0) studiert und war ziemlich überrascht, wenn diese Methode: < /p>
[code]public static Func Curry ( this Func f) { return a => b => f(a, b); } < /code>
... wurde vom Compiler in dies übersetzt: < /p>
public static Func Curry(this Func f) { first local = new first(); local.function = f; return new Func(local.Curry); } private sealed class first { private sealed class second { public first ancestor; public T1 firstParameter; public TOut Curry(T2 secondParameter) { return ancestor.function(firstParameter, secondParameter); } } public Func function; public Func Curry(T1 firstParameter) { second local = new second(); local.ancestor = this; local.firstParameter = firstParameter; return new Func(local.Curry); } } < /code>
Die zweite Klasse ist also verschachtelt und die erste Klasse ist für die Müllsammlung nicht verfügbar, während wir Delegate verwenden, die auf Second.curry verweisen. Gleichzeitig ist alles, was wir in der ersten Klasse brauchen, [b] Funktion [/b]. Vielleicht können wir es (Delegierter) in die zweite Klasse kopieren und dann könnte die erste Klasse gesammelt werden? Ja, wir sollten dann auch die zweite Klasse nicht abnestet machen, aber es scheint, dass das in Ordnung ist. Wie ich weiß, werden die Delegierten nach Wert "kopiert", damit ich vorschlagen kann, dass es ziemlich langsam ist, aber gleichzeitig kopieren wir [b] FirstParameter [/b]?! Vielleicht könnte jemand erklären, warum der Compiler all diese Dinge tut?) Ich spreche über so etwas: < /p>
private sealed class first { public Func function; public Func Curry(T1 firstParameter) { second local = new second(); local.function = function; local.firstParameter = firstParameter; return new Func(local.Curry); } } public sealed class second { public T1 firstParameter; public Func function; public TOut Curry(T2 secondParameter) { return function(firstParameter, secondParameter); } } [/code]
Ziel:
MEZ/MESZ-Zeit in UTC umwandeln
Wird im folgenden logischen App-Ausdruck verwendet:
convertTimeZone('timestamp', 'sourceTimeZone', 'destinationTimeZone', 'format'?)
Meine Logik App-Design...
Ich habe gerade etwas über Expression erfahren. Als Bibliotheksautor hat mich das wirklich fasziniert; Meine Bibliotheken nutzen in großem Umfang Quellgeneratoren, um sowohl Hochleistungscode als...