, ben PDF 79. sayfasında şu gördüğümüz: içteki ForEach yerine çeviri tarafından üretilen kullanıcı kodundan iseNeden bir özel hesaplama ifadesi oluşturucuda Builder.Source() kullanıyorsunuz? <a href="http://fsharp.org/specs/language-spec/" rel="noreferrer">F# 4.0 spec</a> okumak,
yardımcı fonksiyon
src(e)
b.Source(e)
gösterir ve bir inşaatçıb
Source
yöntemini içerir. Aksi takdirde,src(e)
,e
'u belirtir.
Bu, hesaplama ifadelerinin nasıl ayrıştırıldığına ve ifadenin oluşturucu nesnesine bir dizi yöntem çağrısına dönüştürüldüğüne ilişkin ayrıntının ayrıntılı (ÇOK ayrıntılı) açıklaması bağlamındadır. Hesaplama ifadelerinin arkasındaki kavramların geri kalanını anlamada bana yardımcı olma konusunda çok değerli bulduğum Scott Wlaschin's Computation Expressions series, Source
yönteminden bahsetmiyor ve başka herhangi bir başvuruda bulunamamıştır. (Bu konuda çok fazla yardımda bulunmuyor, çünkü tonlarca insan kaynak kodu hakkında konuşuyor ve Source
yöntemine yapılan göndermeler gömülüyor).
Ayrıca, MSDN page on computation expressions adresindeki herhangi bir yerde Source
belgesini göremiyorum. QueryBuilder class, Source
kullanıyor, bu yüzden bakabileceğim bir örneğim var, ancak bunun diğer durumlarda neden yararlı olabileceğine dair bir açıklama yok.
Özel bir hesaplama ifadesi oluşturucuda hangi koşullarda Source
yöntemine sahip olmak istersiniz? Varsayılan ForEach
kullanımının birinin ihtiyaçları için yetersiz olduğu ve Source
yönteminin yararlı olacağı bir senaryo ne olurdu?
@mydogisbox - Bağlantı için teşekkürler, ancak bu sayfayı daha önce gördüm. Kaynak() 'in' in 'içeriğinin içeriğiyle çağrıldığının farkına varıyorum (yani' x'de öğe için 'Kaynak (x)' 'ye bir çağrı üretir). Ve 'Kaynak'ın' For''a geçmek için uygun bir şey döndürmesi gerektiğini anlıyorum. Tam olarak neden göremiyorum * neden *. 'QueryBuilder.Source' ya IEnumerable veya IQueryable (IEnumerable öğesinden devralınır) ister, her ikisi de bir 'For' işlevi üzerinde yineleme için uygundur. O zaman neden kaynak aranıyor? Neden sadece "Bana bir IEnumerable verdiler, bu yüzden üzerinde yineleyeceğim" deme? – rmunn
Sanırım aynı şey hakkında konuşuyoruz, ne demek istediğimi açıklamak için bir yorumda yeterli yer yoktu. "For' hakkında konuşuyorum "QueryBuilder.For 'ifadesiyle' '' '' d için müşteri sorgusu '' sorgusu '' çağrılır. – rmunn