Tag: lambda

“Combinators”的好解释(非math家)

任何人都可以很好的解释“组合器”(Y-combinators等,而不是公司) 我正在寻找一个懂得recursion和高阶函数的实用程序员,但是没有很强的理论和math背景。 (请注意,我正在谈论这些事情: http : //en.wikipedia.org/wiki/Y_combinator )

为什么lambda转换为值为true的布尔值?

#include <iostream> void IsTrue(const bool value) { if (value) { std::cout << "value is True!\n"; } } int main() { IsTrue([]() { ; /* some lambda */ }); return 0; } 输出: value is True! 为什么lambda在GCC和Clang上评估为true ? MSVC不能build立这个(不能转换lambda到布尔)。 这是一个编译器错误? 或者标准的哪一段允许这样做?

可以expressionlambdaexpression式的“types”吗?

将lambdaexpression式看作可调用对象的“语法糖”,可以表示无名的基础types吗? 一个例子: struct gt { bool operator() (int l, int r) { return l > r; } } ; 现在, [](int l, int r) { return l > r; } [](int l, int r) { return l > r; }是上述代码的优雅替代品(加上可调用对象的必要创build),但有没有一种方法来expressionGT(types)本身? 一个简单的用法: std::set<int, gt> s1; // A reversed-order std::set // Is there a way to do […]

为什么使用lambda函数?

我可以find很多东西,告诉我什么是lambda函数,语法是如何工作的,什么不是。 但除了“酷炫的因素”(我可以在中间调用另一个函数,很整洁!)我还没有看到过分强烈的说法,为什么我真的需要/想要使用它们。 在我看到的大多数例子中,它似乎更像是一种风格或结构的select。 在python规则中,打破了“只有一个正确的做法”。 它是如何使我的程序更正确,更可靠,更快,更容易理解? (我所见过的大多数编码标准都倾向于告诉你避免在单一行上写出过于复杂的语句,如果这样可以更容易地阅读它。

Find()和First()抛出exception,如何返回null?

有没有一个linq lambdasearch方法返回null,而不是抛出一个exception时,search列表? 我目前的解决scheme是这样的:(避免被抛出exception) if (list.Exists(x => x.Foo == Foo)) { var listItem = list.Find(x => x.Foo == Foo); } 重复这个expression只是感觉不对。 就像是 … var listItem = list.Find(x => x.Foo == Foo); if (listItem != null) { //Do stuff } …对我感觉更好。 还是只是我? 你对这个有更好的方法吗? (解决scheme不必返回null,只是一个更好的解决scheme是好的)

Java Lambdaexpression式

在Java 8中添加了Lambdaexpression式。我想了解为什么这很重要。 对于那些还没有接触到函数式编程习惯用法的Java程序员来说,这意味着什么? 这是否意味着我可以编写更好或更大规模的代码,或者只是使代码更加冗长。 或者全部。

Java 8通过方法作为参数

目前正在进入Java 8的lambdaexpression式和方法引用。 我想传递一个没有参数,没有返回值的方法作为另一个方法的参数。 这是我如何做到的: public void one() { System.out.println("one()"); } public void pass() { run(this::one); } public void run(final Function function) { function.call(); } @FunctionalInterface interface Function { void call(); } 我知道java.util.function有一组预定义的函数接口,例如Function<T,R>但是我没有find一个没有参数而没有产生结果的函数接口。

在PHP中lambda有什么用?

lambda匿名函数是PHP 5.3的一部分。 它有什么用途? 有什么只能用lambda做的吗? lambda更适合某些任务吗? 我已经看过斐波那契的例子了,我实际上不需要写Fibonacci序列,所以我仍然不确定它是否对我在编写webbish应用程序时遇到的任务有用。 那么在“现实生活”中,人们做了什么呢?

如何声明一个接受lambda的函数?

我在网上阅读了许多教程,解释了如何使用lambdas与标准库(如std::find ),他们都非常有趣,但我找不到任何解释如何使用lambda为我自己的function。 例如: int main() { int test = 5; LambdaTest([&](int a) { test += a; }); return EXIT_SUCCESS; } 我应该如何申报LambdaTest ? 第一个参数的types是什么? 然后,我怎样才能调用传递给它的匿名函数 – 例如 – “10”作为它的参数?

从Expression <Func <TModel,TProperty >>获取该属性的string

我使用了一些强types的expression式,这些expression式被序列化为允许我的UI代码具有强types的sorting和searchexpression式。 这些是typesExpression<Func<TModel,TProperty>>并且被使用为: SortOption.Field = (p => p.FirstName); 。 我已经完成了这个简单的情况下完美的工作。 我用于parsing“FirstName”属性的代码实际上是重用了我们使用的第三方产品中的一些现有function,并且它工作得很好,直到我们开始深入嵌套的属性( SortOption.Field = (p => p.Address.State.Abbreviation); )。 这段代码在支持深度嵌套属性的需求方面有一些非常不同的假设。 至于这段代码是干什么的,我不是很了解它,而不是改变代码,我想我应该从头开始写这个function。 但是,我不知道这样做的好方法。 我怀疑我们可以做一些比做一个ToString()和执行stringparsing更好的东西。 那么,如何处理这些微不足道和深层嵌套的情况呢? 要求: 给定expression式p => p.FirstName我需要一个"FirstName"的string。 给定expression式p => p.Address.State.Abbreviation我需要一个"Address.State.Abbreviation"string 虽然对于我的问题的答案并不重要,但是我怀疑我的序列化/反序列化代码对将来发现这个问题的其他人可能是有用的,所以它在下面。 再一次,这个代码对于这个问题并不重要 – 我只是认为这可能对别人有帮助。 请注意, DynamicExpression.ParseLambda来自dynamicLINQ的东西和Property.PropertyToString()是这个问题是关于。 /// <summary> /// This defines a framework to pass, across serialized tiers, sorting logic to be performed. /// </summary> /// <typeparam […]