যেহেতু গুগলে এটি "সি # ল্যাম্বদা রেফ" এর শীর্ষ ফলাফলগুলির মধ্যে একটি; আমার মনে হয় উপরের উত্তরগুলিতে আমার প্রসারিত হওয়া দরকার। পুরানো (সি # 2.0) বেনামে প্রতিনিধি সিনট্যাক্স কাজ করে এবং এটি আরও জটিল স্বাক্ষরগুলি (পাশাপাশি বন্ধকরণ) সমর্থন করে। কমপক্ষে লাম্বদার এবং অজ্ঞাত প্রতিনিধিরা সংকলক ব্যাকএন্ডে অনুধাবন বাস্তবায়ন ভাগ করেছেন (যদি তারা অভিন্ন না হয়) - এবং সবচেয়ে বড় কথা, তারা ক্লোজার সমর্থন করে।
সিনট্যাক্স প্রদর্শনের জন্য, অনুসন্ধান করার সময় আমি যা করার চেষ্টা করছিলাম:
public static ScanOperation<TToken> CreateScanOperation(
PrattTokenDefinition<TNode, TToken, TParser, TSelf> tokenDefinition)
{
var oldScanOperation = tokenDefinition.ScanOperation; // Closures still work.
return delegate(string text, ref int position, ref PositionInformation currentPosition)
{
var token = oldScanOperation(text, ref position, ref currentPosition);
if (token == null)
return null;
if (tokenDefinition.LeftDenotation != null)
token._led = tokenDefinition.LeftDenotation(token);
if (tokenDefinition.NullDenotation != null)
token._nud = tokenDefinition.NullDenotation(token);
token.Identifier = tokenDefinition.Identifier;
token.LeftBindingPower = tokenDefinition.LeftBindingPower;
token.OnInitialize();
return token;
};
}
কেবল মনে রাখবেন যে ল্যাম্বডাস প্রক্রিয়াগতভাবে এবং গাণিতিকভাবে সুরক্ষিত (কারণ পূর্বে উল্লিখিত রেফের মান প্রচারের কারণে): আপনি কৃমিতে একটি ক্যান খুলতে পারেন। এই সিনট্যাক্সটি ব্যবহার করার সময় সাবধানতার সাথে চিন্তা করুন।