«pure-function» etiketlenmiş sorular

Saf işlev, aynı argümanlar verildiğinde her zaman aynı şeyi değerlendiren ve herhangi bir dış duruma bağlı olmayan veya değişemeyen işlevdir.

6
Notlandırılmış bir saf fonksiyonun kendisi saf olarak mı kabul edilir?
Diyelim ki fn(x)en önemli faktörlerin bir listesini döndürmek gibi pahalı bir şey yapan saf bir işlev x. Ve diyelim ki aynı fonksiyonun hafızaya alınmış bir versiyonunu yaptık memoizedFn(x). Belirli bir giriş için her zaman aynı sonucu döndürür, ancak performansı artırmak için önceki sonuçların özel bir önbelleğini tutar. Resmen konuşmak, memoizedFn(x)saf …

7
Aynı girişin her zaman aynı çıkışı döndürdüğü, ancak aynı zamanda yan etkileri olan bir fonksiyona ne denir?
Mesela normal bir saf işleve sahibiz. function add(a, b) { return a + b } Sonra onu yan etkisi olacak şekilde değiştiriyoruz function add(a, b) { writeToDatabase(Math.random()) return a + b; } Bildiğim kadarıyla saf bir işlev olarak görülmüyor, çünkü insanların çoğu zaman "yan etkisi olmayan işlevler" olarak adlandırdıkları saf …

5
İstisnaları yakalamak / atmak, aksi halde saf bir yöntemi zorlaştırıyor mu?
Aşağıdaki kod örnekleri sorumu bağlamı sağlar. Room sınıfı bir temsilci ile başlatıldı. Room sınıfının ilk uygulamasında, delegelere istisnalar atan hiçbir muhafız yoktur. Bu istisnalar, delegenin değerlendirildiği Kuzey mülkünde kabarcıklı olacaktır (not: Main () yöntemi, bir Oda örneğinin müşteri kodunda nasıl kullanıldığını gösterir): public sealed class Room { private readonly Func<Room> …

4
Saf işlevlerin halka açık olmaması için iyi bir neden var mı?
Bir iş arkadaşınızla devam eden küçük bir tartışmam vardı. Basitçe söylemek gerekirse, saf olan işlevleri gizlemek / kapsüllemek için iyi bir neden var mı? "Saf" deyin , wikipedia tanımını kastediyorum : Daima aynı sonuçları aynı girdiden döndürür. (Bu tartışmanın uğruna değer semantiği Foo Create(){ return new Foo(); }yoksa Foo, saf …

2
Bir kurucuda [Saf] ne zaman kullanılır?
.NET'te kod sözleşmeleri hakkında bilgi ediniyorum ve saf yapıcılar fikrini anlamaya çalışıyorum. Kod sözleşmeleri belgelerine durumları: Bir sözleşme kapsamında çağrılan tüm yöntemler saf olmalıdır; yani önceden var olan herhangi bir durumu güncellememeleri gerekir. Bir saf yöntemin, saf yönteme girdikten sonra oluşturulan nesneleri değiştirmesine izin verilir. Ve PureAttributebelgeler şöyle diyor: Bir …

5
Bir işlev parametre olarak bir işlev gerektiriyorsa derhal kirletilebilir mi?
Bir giriş parametresinin saflığı, çalışma zamanına kadar bilinmediği için, bir işlev bir giriş parametresi olarak işlev görürse hemen saf olmayan bir işlem olarak kabul edilir mi? İlgili: Bir işlev, işlevin dışında tanımlanan ancak parametre olarak iletilmeyen saf bir işlev uygularsa, yan etkisi olmayan ölçütleri yerine getiriyorsa ve çıktı yalnızca girdiye …

6
Saf fonksiyonel vs söyle, sorma?
"Bir işlev için ideal argüman sayısı sıfırdır" oldukça yanlıştır. İdeal argüman sayısı, fonksiyonunuzun yan etkisiz olmasını sağlamak için gereken sayıdır. Bundan daha az ve gereksiz yere işlevlerinizin saf olmamasına neden olursunuz, böylece sizi başarı çukurundan uzaklaşmaya ve acı eğimine tırmanmaya zorlarsınız. Bazen "Bob Amca" onun tavsiyesi ile yerinde. Bazen olağanüstü …

3
“Bir yöntemin bir değer döndürmesi veya yan etkileri olması gerekir, ancak her ikisi birden değil” kaynağı
Bir yöntemin ya bir dönüş değeri (ve referans olarak saydam) olması ya da yan etkileri olması gerektiğini, ancak her ikisini birden okumadığını bir kez okudum. Bu kurala ilişkin herhangi bir referans bulamıyorum, ancak bu kural hakkında daha fazla bilgi edinmek istiyorum. Bu tavsiyenin kaynağı nedir? Hangi kişi veya topluluktan ortaya …

5
Bir işlev safsa hesapla
Wikipedia'ya göre: Bilgisayar programlamasında, işlev tutma ile ilgili bu ifadelerin her ikisi de bir işlev olarak tanımlanabilir: İşlev, aynı bağımsız değişken değerleri verildiğinde her zaman aynı sonuç değerini değerlendirir. İşlev sonuç değeri, program yürütme ilerledikçe veya programın farklı yürütmeleri arasında değişebilecek hiçbir gizli bilgiye veya duruma veya G / Ç …

2
İşlevsel programlama, aynı nesneye birden çok yerden başvurulduğu durumu nasıl ele alır?
İnsanların (bu sitede de) fonksiyonel programlama paradigmasını rutin olarak övtüğünü ve her şeyin değişmez olmasının ne kadar iyi olduğunu vurguladığını okuyorum ve duyuyorum. Özellikle, insanlar bu yaklaşımı C #, Java veya C ++ gibi geleneksel olarak zorunlu OO dillerinde bile, sadece programcıya zorlayan Haskell gibi tamamen işlevsel dillerde önermektedir. Anlamakta …

3
İşlevsel programlamada atama operatörü veya döngülerin kullanımı neden önerilmez?
İşlevim iki gereksinimin altındaysa, Sum verilen koşul için öğenin doğru olarak değerlendirildiği bir listedeki öğelerin toplamını döndürmek işlevinin saf işlev olarak nitelendirilebileceğine inanıyorum, değil mi? 1) Verilen i / p seti için, fonksiyon çağrıldığı zamandan bağımsız olarak aynı o / p döndürülür 2) herhangi bir yan etkisi yoktur public int …

4
Bu yöntem saf mı?
Aşağıdaki uzantı yöntemi var: public static IEnumerable<T> Apply<T>( [NotNull] this IEnumerable<T> source, [NotNull] Action<T> action) where T : class { source.CheckArgumentNull("source"); action.CheckArgumentNull("action"); return source.ApplyIterator(action); } private static IEnumerable<T> ApplyIterator<T>(this IEnumerable<T> source, Action<T> action) where T : class { foreach (var item in source) { action(item); yield return item; } } …
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.