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

104
Что предпочтительнее использовать: лямбда-функции или вложенные функции (def)?

В основном я использую лямбда-функции, но иногда использую вложенные функции, которые, кажется, обеспечивают такое же поведение. Вот несколько тривиальных примеров, когда они функционально делают то же самое, если они были обнаружены в другой функции: Лямбда-функция >>> a = lambda x : 1 +...

103
C ++ 0x лямбда-захват по значению всегда const?

Есть ли способ захватить по значению и сделать захваченное значение неконстантным? У меня есть функтор библиотеки, который я хотел бы захватить и вызвать метод, который не является константой, но должен быть. Следующее не компилируется, но создание foo :: operator () const исправляет его. struct...

101
Зачем нужны волокна

Для волокон у нас есть классический пример: генерация чисел Фибоначчи. fib = Fiber.new do x, y = 0, 1 loop do Fiber.yield y x,y = y,x+y end end Зачем нам нужны волокна? Я могу переписать это с помощью того же Proc (фактически, закрытие) def clsr x, y = 0, 1 Proc.new do x, y = y, x + y x end end...

101
Что именно делает анонимная функция JavaScript f => f?

Я использую стороннюю библиотеку, в которой есть функция, которая принимает функции в качестве аргументов. Я выполняю несколько условных проверок, чтобы решить, добавлять ли конкретную функцию в качестве параметра, и в некоторых случаях я не хочу предоставлять функцию. В этом случае предоставление...

101
Как установить значение по умолчанию для поля модели Django для вызова / вызова функции (например, дату относительно времени создания объекта модели)

ИЗМЕНЕНО: Как я могу установить в поле Django значение по умолчанию для функции, которая оценивается каждый раз, когда создается новый объект модели? Я хочу сделать что-то вроде следующего, за исключением того, что в этом коде код оценивается один раз и устанавливает по умолчанию ту же дату для...

100
Возврат из лямбды forEach () в java

Я пытаюсь изменить некоторые циклы for-each на лямбда- forEach()методы, чтобы открыть для себя возможности лямбда-выражений. Кажется возможным следующее: ArrayList<Player> playersOfTeam = new ArrayList<Player>(); for (Player player : players) { if (player.getTeam().equals(teamName)) {...

99
Зачем нужны лямбда-выражения шаблона, представленные в C ++ 20, если в C ++ 14 уже есть общая лямбда-выражение?

c ++ 14 представили общие лямбды, которые позволили написать следующее: auto func = [](auto a, auto b){ return a + b; }; auto Foo = func(2, 5); auto Bar = func("hello", "world"); Совершенно очевидно, что эта общая лямбда funcработает так же, как и шаблонная функция func. Почему комитет C ++ решил...

99
Множественные нулевые проверки в Java 8

У меня есть приведенный ниже код, который немного уродлив для множественных нулевых проверок. String s = null; if (str1 != null) { s = str1; } else if (str2 != null) { s = str2; } else if (str3 != null) { s = str3; } else { s = str4; } Поэтому я попытался использовать, Optional.ofNullableкак...

99
Как реализован std :: function?

Согласно источникам, которые я нашел, лямбда-выражение по существу реализуется компилятором, создающим класс с перегруженным оператором вызова функции и ссылочными переменными в качестве членов. Это говорит о том, что размер лямбда-выражений варьируется, и при наличии достаточного количества...

99
Правильное использование Optional.ifPresent ()

Я пытаюсь понять ifPresent() метод OptionalAPI в Java 8. У меня простая логика: Optional<User> user=... user.ifPresent(doSomethingWithUser(user.get())); Но это приводит к ошибке компиляции: ifPresent(java.util.functionError:(186, 74) java: 'void' type not allowed here) Конечно, я могу...

97
Реализация лямбда-выражения C ++ 11 и модель памяти

Мне хотелось бы получить некоторую информацию о том, как правильно думать о замыканиях std::functionв C ++ 11, о том, как они реализованы и как обрабатывается память. Хотя я не верю в преждевременную оптимизацию, у меня есть привычка тщательно учитывать влияние моего выбора на производительность...

97
Есть ли способ изменить коды состояния http, возвращаемые Amazon API Gateway?

Например, если я хочу вернуть конкретную ошибку 400 для недопустимых параметров или, возможно, 201, когда вызов лямбда-функции привел к созданию. Я хотел бы иметь разные коды состояния http, но похоже, что шлюз api всегда возвращает код состояния 200, даже если лямбда-функция возвращает ошибку....

95
Как преобразовать все строки в List <string> в нижний регистр с помощью LINQ?

Вчера я увидел фрагмент кода в одном из ответов на StackOverflow, который меня заинтриговал. Это было примерно так: List<string> myList = new List<string> {"aBc", "HELLO", "GoodBye"}; myList.ForEach(d=>d.ToLower()); Я надеялся, что смогу использовать его для преобразования всех...

95
Обертывание тайминга StopWatch с помощью делегата или лямбда?

Я пишу такой код, немного быстро и грязно: var sw = new Stopwatch(); sw.Start(); for (int i = 0; i < 1000; i++) { b = DoStuff(s); } sw.Stop(); Console.WriteLine(sw.ElapsedMilliseconds); Конечно , есть способ вызвать этот бит кода синхронизации как лямбда фантазийных schmancy .NET 3.0 , а не (...

95
Как создать экземпляр анонимного интерфейса в Котлине?

У меня есть сторонняя библиотека Java, объект с таким интерфейсом: public interface Handler<C> { void call(C context) throws Exception; } Как я могу кратко реализовать его в Kotlin, как анонимный класс Java, например: Handler<MyContext> handler = new Handler<MyContext> {...

94
Что означает [=] в C ++?

Я хочу знать, что [=]делает? Вот небольшой пример template <typename T> std::function<T (T)> makeConverter(T factor, T offset) { return [=] (T input) -> T { return (offset + input) * factor; }; } auto milesToKm = makeConverter(1.60936, 0.0); Как будет работать код []вместо [=]? Я...

94
Явный тип возврата лямбды

Когда я пытаюсь скомпилировать этот код (VS2010), я получаю следующую ошибку: error C3499: a lambda that has been specified to have a void return type cannot return a value void DataFile::removeComments() { string::const_iterator start, end; boost::regex expression("^\\s?#");...

94
Устранение неоднозначной перегрузки указателя функции и std :: function для лямбда с помощью +

В следующем коде первый вызов fooнеоднозначен и поэтому не может быть скомпилирован. Второй, с добавленным +перед лямбдой, разрешает перегрузку указателя функции. #include <functional> void foo(std::function<void()> f) { f(); } void foo(void (*f)()) { f(); } int main () { foo( [](){}...

94
_ (подчеркивание) - зарезервированное ключевое слово

Я только что заменил sследующее лямбда-выражение на _: s -> Integer.parseInt(s) Компилятор Eclipse говорит: '_' не следует использовать в качестве идентификатора, поскольку это зарезервированное ключевое слово начиная с уровня источника 1.8. Я не нашел никаких объяснений в лексической структуре...