SORU
11 Kasım 2009, ÇARŞAMBA


Parametre adı yansıtan: C kötüye lambda ifadeleri ya da Sözdizimi brilliance?

MvcContrib Grid bileşeni bakıyorum ve, sözdizimsel bir numara Grid syntax kullanılan ama aynı zamanda hem de hayran oldum:

.Attributes(style => "width:100%")

Sözdizimi yukarıda width:100% tarzı oluşturulan HTML öznitelik ayarlar. Şimdi Eğer dikkat ederseniz, 'stil' hiçbir yerde belirtilmediği, bu durumda anlaşılanadıBu parametre ifadesi! Nerede bu içine kazmak ve bulduğumu 'magic' olur:

   Hash(params Func<object, TValue>[] hash)
   {
     foreach (var func in hash)
     {
       Add(func.Method.GetParameters()[0].Name, func(null));
     }
   }

Yani gerçekten, kod parametreleri, derleme zamanı resmi, adı özniteliği sözlük-değer adını çift oluşturmak için kullanıyor. Neden sözdizimi çok etkileyici gerçekten, ama aynı zamanda çok tehlikeli bir yapı. Lambda ifadeleri genel kullanım değiştirilmesini sağlarisimleryan etkisi olmadan kullanılıyor. collection.ForEach(book => Fire.Burn(book)) yazan bir kitapta bir örnek benim kod yazmak biliyorum görüyorum collection.ForEach(log => Fire.Burn(log)) veaynı şey demektir. Ama MvcContrib Kılavuz sözdizimi ile burada birden aktif ve decissions benim değişkenler için seçtiğim adlarına göre görünür hale getiren bir kod buldum.

Yani bu# 3.5/4.0 toplum ve lambda ifadeleri aşıklar C ile yaygın bir uygulamadır? Ya da sahte bir endişe etmemem maverick numara mı?

CEVAP
11 Kasım 2009, ÇARŞAMBA


Çok değil, çünkü bunu garip buluyorumadıama çünkülambda gereksizdir; anonim bir kullanım ve daha esnek olabilir

.Attributes(new { style = "width:100%", @class="foo", blip=123 });

Bu bir desen kullanılan çok ASP.NET MVC (örneğin), ve other uses caveat, not da Ayende's thoughts eğer ismi bir büyü değeri yerine arayanın özgü)

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Lamborghini

    Lamborghini

    13 Aralık 2005
  • martin shervington

    martin sherv

    7 EKİM 2011
  • MrExcite96

    MrExcite96

    17 ŞUBAT 2011