Вопросы с тегом «closures»

Закрытие - это функция первого класса, которая ссылается на (закрывает) переменные из области, в которой оно было определено. Если замыкание все еще существует после того, как его определяющая область действия заканчивается, переменные, над которыми оно закрывается, также будут продолжать существовать.

9
Захваченная переменная в цикле в C #
Я встретил интересную проблему о C #. У меня есть код, как показано ниже. 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()); } Я ожидаю, что он выведет 0, …

6
Анонимные рекурсивные функции PHP
Возможно ли иметь функцию PHP, которая является как рекурсивной, так и анонимной? Это моя попытка заставить его работать, но имя функции не передается. $factorial = function( $n ) use ( $factorial ) { if( $n <= 1 ) return 1; return $factorial( $n - 1 ) * $n; }; print …

12
Что такое «замыкания» в .NET?
Что такое закрытие ? У нас они есть в .NET? Если они существуют в .NET, не могли бы вы предоставить фрагмент кода (желательно в C #), объясняющий это?
195 .net  closures 

8
var self = this?
Использование методов экземпляра в качестве обратных вызовов для обработчиков событий изменяет область действия thisс «Мой экземпляр» на «Независимо от того, что только что вызвало обратный вызов» . Так что мой код выглядит так function MyObject() { this.doSomething = function() { ... } var self = this $('#foobar').bind('click', function(){ self.doSomethng() // …

5
Swift необязательный параметр Escapeing Closure
Дано: 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() Есть ли способ сделать completionпараметр (и action) типа, Action?а также …

11
Как мне вызвать 3 функции, чтобы выполнять их одну за другой?
Если мне нужно вызвать эту функцию одну за другой, $('#art1').animate({'width':'1000px'},1000); $('#art2').animate({'width':'1000px'},1000); $('#art3').animate({'width':'1000px'},1000); Я знаю, в jQuery я мог бы сделать что-то вроде: $('#art1').animate({'width':'1000px'},1000,'linear',function(){ $('#art2').animate({'width':'1000px'},1000,'linear',function(){ $('#art3').animate({'width':'1000px'},1000); }); }); Но давайте предположим, что я не использую jQuery и хочу позвонить: some_3secs_function(some_value); some_5secs_function(some_value); some_8secs_function(some_value); Как я должен вызывать эту функцию для выполнения some_3secs_function, …

9
Как работают лексические замыкания?
Пока я исследовал проблему с лексическими замыканиями в коде Javascript, я столкнулся с этой проблемой в Python: flist = [] for i in xrange(3): def func(x): return x * i flist.append(func) for f in flist: print f(2) Обратите внимание, что этот пример осторожно избегает lambda. На нем печатается «4 4 …

6
Как использовать Swift @autoclosure
Я заметил при написании assertв Swift, что первое значение напечатано как @autoclosure() -> Bool с перегруженным методом, чтобы вернуть общее Tзначение, чтобы проверить существование через LogicValue protocol. Однако строго придерживаться поставленного вопроса. Похоже, что хочет, @autoclosureкоторый возвращает Bool. Запись фактического замыкания, которое не принимает параметров и возвращает Bool, не работает, …
148 closures  swift 

7
Сохраните закрытие как переменную в Swift
В Objective-C вы можете определить вход и выход блока, сохранить один из тех блоков, которые передаются в метод, а затем использовать этот блок позже: // 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 …

2
Закрытие использования неэкранирующего параметра может позволить ему экранировать
У меня есть протокол: enum DataFetchResult { case success(data: Data) case failure } protocol DataServiceType { func fetchData(location: String, completion: (DataFetchResult) -> (Void)) func cachedData(location: String) -> Data? } С примером реализации: /// An implementation of DataServiceType protocol returning predefined results using arbitrary queue for asynchronyous mechanisms. /// Dedicated to …

2
Является ли этот объект-расширение-срок-закрытие ошибкой компилятора C #?
Я отвечал на вопрос о возможности закрытия (законно) продления времени жизни объектов, когда столкнулся с каким-то чрезвычайно любопытным генератором кода со стороны компилятора C # (4.0, если это имеет значение). Самое короткое повторение, которое я могу найти, следующее: Создайте лямбду, которая захватывает локальный при вызове статического метода содержащего типа. Назначьте …

8
Как запустить асинхронные обратные вызовы на игровой площадке
Многие методы Cocoa и CocoaTouch имеют обратные вызовы завершения, реализованные как блоки в Objective-C и Closures в Swift. Однако при испытании их на Playground завершение никогда не вызывается. Например: // Playground - noun: a place where people can play import Cocoa import XCPlayground let url = NSURL(string: "http://stackoverflow.com") let request …

10
ключевое слово nonlocal в Python 2.x
Я пытаюсь реализовать закрытие в Python 2.6, и мне нужно получить доступ к нелокальной переменной, но похоже, что это ключевое слово недоступно в python 2.x. Как получить доступ к нелокальным переменным в замыканиях в этих версиях Python?

1
Когда в замыкании реализуются Fn, FnMut и FnOnce?
Каковы специфические условия для закрытия в целях осуществления Fn, FnMutи FnOnceчерты? То есть: Когда закрытие не реализует FnOnceчерту? Когда закрытие не реализует FnMutчерту? Когда закрытие не реализует Fnчерту? Например, изменение состояния замыкания в его теле заставляет компилятор не реализовывать Fnего.
114 rust  closures 

12
Вызов закрытия, присвоенного свойству объекта напрямую
Я хотел бы иметь возможность вызывать замыкание, которое я назначаю свойству объекта напрямую, без переназначения замыкания переменной и последующего ее вызова. Это возможно? Код ниже не работает и вызывает Fatal error: Call to undefined method stdClass::callback(). $obj = new stdClass(); $obj->callback = function() { print "HelloWorld!"; }; $obj->callback();

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.