«closures» etiketlenmiş sorular

Kapatma, tanımlandığı kapsamdaki değişkenleri ifade eden (kapanan) birinci sınıf bir işlevdir. Kapatma, tanımlayıcı kapsamı sona erdikten sonra hala mevcutsa, kapattığı değişkenler de var olmaya devam edecektir.

9
C # 'da bir döngüde yakalanan değişken
C # ile ilgili ilginç bir sorunla karşılaştım. Aşağıdaki gibi bir kod var. List<Func<int>> actions = new List<Func<int>>(); int variable = 0; while (variable < 5) { actions.Add(() => variable * 2); ++ variable; } foreach (var act in actions) { Console.WriteLine(act.Invoke()); } Ben 0, 2, 4, 6, 8 çıktı …


12
.NET'te 'kapaklar' nedir?
Bir nedir kapatma ? .NET'te var mı? .NET'te mevcutlarsa, lütfen açıklayan bir kod snippet'i (tercihen C # olarak) sağlayabilir misiniz?
195 .net  closures 

8
var self = bu?
Olay işleyicileri için geri aramalar kapsamını değiştirir olarak örnek yöntemleri kullanarak thisgelen "My örneğine" için "sadece geri arama ne istedilerse" . Yani kodum şöyle görünüyor function MyObject() { this.doSomething = function() { ... } var self = this $('#foobar').bind('click', function(){ self.doSomethng() // this.doSomething() would not work here }) } Çalışıyor, …

5
Swift isteğe bağlı kaçan kapatma parametresi
Verilen: typealias Action = () -> () var action: Action = { } func doStuff(stuff: String, completion: @escaping Action) { print(stuff) action = completion completion() } func doStuffAgain() { print("again") action() } doStuff(stuff: "do stuff") { print("swift 3!") } doStuffAgain() completionParametre (ve action) türünü yapmanın Action?ve saklamanın bir yolu var …

11
3 işlevi birbiri ardına yürütmek için nasıl çağırmalıyım?
Bu işlevleri birbiri ardına çağırmam gerekirse, $('#art1').animate({'width':'1000px'},1000); $('#art2').animate({'width':'1000px'},1000); $('#art3').animate({'width':'1000px'},1000); Ben jQuery gibi bir şey yapabilir biliyorum: $('#art1').animate({'width':'1000px'},1000,'linear',function(){ $('#art2').animate({'width':'1000px'},1000,'linear',function(){ $('#art3').animate({'width':'1000px'},1000); }); }); Ama diyelim ki jQuery kullanmıyorum ve şunu aramak istiyorum: some_3secs_function(some_value); some_5secs_function(some_value); some_8secs_function(some_value); Çalıştırmak için bu işlevleri nasıl çağırmalıyım some_3secs_functionve bu çağrı bittikten SONRA, daha some_5secs_functionsonra bu çağrıyı yürütün ve …

9
Sözcüksel kapanışlar nasıl çalışır?
Javascript kodunda sözcüksel kapatma ile yaşadığım bir sorunu araştırırken Python'da bu sorunla karşılaştım: flist = [] for i in xrange(3): def func(x): return x * i flist.append(func) for f in flist: print f(2) Bu örneğin dikkatle önlendiğini unutmayın lambda. Şaşırtıcı olan "4 4 4" yazdırır. "0 2 4" beklerdim. Bu …

6
Swift @autoclosure nasıl kullanılır
assertSwift ile yazarken ilk değerin şu şekilde yazıldığını fark ettim: @autoclosure() -> Bool jenerik bir Tdeğer döndürmek için aşırı yüklenmiş bir yöntemle LogicValue protocol,. Ancak eldeki soruya kesinlikle bağlı kalıyor. A @autoclosuredöndüren bir istiyor gibi görünüyor Bool. Hiçbir parametre almayan ve bir Bool döndüren gerçek bir kapanış yazmak işe yaramaz, …
149 closures  swift 

7
Bir kapağı Swift'te değişken olarak saklama
Objective-C'de, bir bloğun giriş ve çıkışını tanımlayabilir, bir yönteme aktarılan bu bloklardan birini depolayabilir ve daha sonra bu bloğu daha sonra kullanabilirsiniz: // in .h typedef void (^APLCalibrationProgressHandler)(float percentComplete); typedef void (^APLCalibrationCompletionHandler)(NSInteger measuredPower, NSError *error); // in .m @property (strong) APLCalibrationProgressHandler progressHandler; @property (strong) APLCalibrationCompletionHandler completionHandler; - (id)initWithRegion:(CLBeaconRegion *)region completionHandler:(APLCalibrationCompletionHandler)handler …

2
Kaçan parametrenin kapatılması, kaçmasına izin verebilir
Bir protokol var: enum DataFetchResult { case success(data: Data) case failure } protocol DataServiceType { func fetchData(location: String, completion: (DataFetchResult) -> (Void)) func cachedData(location: String) -> Data? } Örnek bir uygulama ile: /// An implementation of DataServiceType protocol returning predefined results using arbitrary queue for asynchronyous mechanisms. /// Dedicated to …

2
Bu nesne ömür boyu genişletme-kapanış bir C # derleyici hata mı?
Ben C # derleyici (bu önemli olursa 4.0) kısmında bazı son derece meraklı kod-gen rastladı kapanış (meşru) nesne ömrünü uzatma olasılığı hakkında bir soru cevap . Bulabildiğim en kısa repro şudur: Kapsayıcı türde statik bir yöntem çağırırken yerel yakalayan bir lambda oluşturun . Oluşturulan temsilci başvurusunu içeren nesnenin örnek alanına …

8
Playground'da Eşzamansız geri aramaları nasıl çalıştırırım
Birçok Cocoa ve CocoaTouch yönteminde, Swift'de Objective-C ve Closures'da bloklar olarak uygulanan tamamlama geri aramaları bulunur. Ancak, bunları Playground'da denerken, tamamlama asla çağrılmaz. Örneğin: // Playground - noun: a place where people can play import Cocoa import XCPlayground let url = NSURL(string: "http://stackoverflow.com") let request = NSURLRequest(URL: url) NSURLConnection.sendAsynchronousRequest(request, queue:NSOperationQueue.currentQueue() …


1
Bir kapanış ne zaman Fn, FnMut ve FnOnce uygular?
Ne belirli koşullar bir kapatma uygulamak için Fn, FnMutve FnOnceözellikleri? Yani: Ne zaman bir kapatma yok değil uygulamak FnOnceözelliği? Ne zaman bir kapatma yok değil uygulamak FnMutözelliği? Ne zaman bir kapatma yok değil uygulamak Fnözelliği? Örneğin, gövdesindeki kapanmanın durumunu değiştirmek, derleyicinin Fnüzerinde uygulanmamasına neden olur.
114 rust  closures 

12
Doğrudan nesne özelliğine atanan kapatma çağrısı
Bir nesnenin özelliğine atadığım bir closure'u bir değişkene yeniden atamadan ve sonra onu çağırmadan doğrudan çağırabilmek istiyorum. Mümkün mü? Aşağıdaki kod çalışmıyor ve nedenleri Fatal error: Call to undefined method stdClass::callback(). $obj = new stdClass(); $obj->callback = function() { print "HelloWorld!"; }; $obj->callback();

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.