Έχουν δημοσιευτεί Παρασκευή, 7 Ιουλίου 2006 11:29 πμ από το μέλος PALLADIN

(Graham C# Closures)

Ένα από τα αγαπημένα μου βιβλία είναι το Hackers & Painters του Paul Graham.
Σε ένα από τα κεφαλαια του βιβλίου πορουσιάζει την υλοποιηση μιας συνάρτησης που δημιουργεί accumulators (θέλοντας να δείξει την δύναμη των closures). Ο κώδικας που παραθέτει είναι σε διαφορες γλώσσες(Lisp, Python, SmallTalk, JavaScript και Java) (συγκρίνοντας τα παραδείγματα φαίνεται ξεκάθαρα η εκφραστική δύναμη και η μινιμαλιστική σχεδίαση της Lisp (O Paul Graham είναι γνωστός Lisp hacker)).

Στο Appendix: Power θα βρείτε τον κώδικα
http://www.paulgraham.com/icad.html

Με την C# 2.0 μπορούμε να δημιουργήσουμε closures χρησιμοποιώντας anonymous delegates.



Converter<int, int> MakeAccumulator(int n)
{
 return delegate(int y) { return n += y; };
}

Converter<int, int> accumulator = MakeAccumulator(0);

Console.WriteLine( accumulator(1) ); // 1
Console.WriteLine( accumulator(1) ); // 2
Console.WriteLine( accumulator(1) ); // 3

 

Share


Ενημέρωση για Σχόλια

Αν θα θέλατε να λαμβάνετε ένα e-mail όταν γίνονται ανανεώσεις στο περιεχόμενο αυτής της δημοσίευσης, παρακαλούμε γίνετε συνδρομητής εδώ

Παραμείνετε ενήμεροι στα τελευταία σχόλια με την χρήση του αγαπημένου σας RSS Aggregator και συνδρομή στη Τροφοδοσία RSS με σχόλια

Σχόλια:

Χωρίς Σχόλια

Ποιά είναι η άποψή σας για την παραπάνω δημοσίευση;

(απαιτούμενο)
απαιτούμενο
προαιρετικό
απαιτούμενο
ÅéóÜãåôå ôïí êùäéêü:
CAPTCHA Image