Tag: lambda

我应该使用std :: for_each吗?

我总是试图更多地了解我使用的语言(不同的风格,框架,模式等)。 我注意到,我从来没有使用std::for_each所以我想也许我应该开始。 在这种情况下的目标是扩大我的想法,而不是在某种程度上改进代码(可读性,performance力,紧凑性等)。 因此,考虑到这种情况,使用std::for_each进行简单的任务(比如打印出一个向量)是一个好主意: for_each(v.begin(), v.end(), [](int n) { cout << n << endl; } ( [](int n)是一个lambda函数)。 代替: for(int i=0; i<v.size(); i++) { cout << v[i] << endl; } 我希望这个问题似乎没有意义。 我想这几乎要问一个更大的问题了……如果一个中级程序员使用语言function,尽pipe他现在不需要,但是只是为了让他能更好地理解这个function,它。 虽然这个更大的问题可能已经被问到(例如这里 )。

最酷的C#LINQ / Lambdas技巧你曾经拉?

看到一个隐藏的function在C#的post,但不是很多人写了linq / lambdas的例子,所以…我不知道… C#LINQ和/或Lambdas /匿名代理你曾经看过/写过的最酷的(如最优雅的)用法是什么? 如果它已经投入生产也有奖励!

缺lessentity framework包含(lambda)扩展

EF OjbectSet.Include(a => a.parent)扩展名不可用。 我知道我可以添加代码来模仿它,但根据EntityFramework 4升级到5,lambda不可用,它应该是可用的。 我有using System.Data.Entity ,并在我的主要项目升级到EF 5。 查看程序集System.Data.Entity.dll,v4.0.0.0(C:\ Program Files(x86)\ Reference Assemblies \ Microsoft \ Framework.NETFramework \ v4.5 \ System.Data.Entity.dll)中的元数据。 … public ObjectQuery<System.Data.Common.DbDataRecord> GroupBy(string keys, string projection, params ObjectParameter[] parameters); public ObjectQuery<T> Include(string path); public ObjectQuery<T> Intersect(ObjectQuery<T> query); 这里没有关于Include的lambda变体的声明。 我已经检查,文件版本是4.0.30319.17929,根据数据库第一代entity framework5 System.Data.Entity与EntityFramework 。 该项目正在生成一个4.5程序集。 在相关的情况下,这个程序集中没有引用EntityFramework本身。 它只是有一些数据服务,所以它包含对System.Data.Entity和主数据层项目的引用。 有任何想法吗?

对于一个lambda来说,是否有效,本质上是closures它自己?

这个lambdarecursion是有效的吗? #include <functional> #include <iostream> int main() { std::function<int(int)> g = [&g](int k) { return (k ? k * g(k-1) : 1); }; std::cout << g(10); // 3628800 } 它似乎编译和运行正常 ,但我很担心在我初始化相同的声明closuresg 。 1-10级的严格有效性?

Java 8 Lambdas上的reflectiontypes推断

我正在尝试Java 8中的新Lambdas,并且正在寻找一种在lambda类上使用reflection来获取lambda函数的返回types的方法。 我特别感兴趣的是lambda实现通用超接口的情况。 在下面的代码示例中, MapFunction<F, T>是通用超接口,我正在寻找一种方法来查找绑定到通用参数T 。 虽然Java在编译器之后丢弃了大量的genericstypes信息,但generics超类和generics超接口的子类(和匿名子类)却保留了这种types的信息。 通过reflection,这些types是可访问的。 在下面的例子(例1)中 ,reflection告诉我, MyMapper实现将java.lang.Integer绑定到genericstypes参数T 即使对于本身是generics的子类,也有一些方法可以找出与generics参数绑定的是什么,如果其他的已知的话。 在下面的例子中考虑情况2 ,其中F和T绑定到相同types的IdentityMapper 。 当我们知道的时候,如果我们知道参数typesT (在我的情况下,我们知道的话),我们知道typesF 现在的问题是,我怎样才能实现Java 8 lambdas类似的东西呢? 由于它们实际上不是generics超级界面的常规子类,因此上述方法不起作用。 具体来说,我可以找出parseLambda将java.lang.Integer绑定到T , identityLambda parseLambda绑定到F和T ? PS:理论上讲,应该可以反编译lambda代码,然后使用embedded式编译器(如JDT)并进入其types推断。 我希望有一个更简单的方法来做到这一点;-) /** * The superinterface. */ public interface MapFunction<F, T> { T map(F value); } /** * Case 1: A non-generic subclass. */ public class MyMapper implements […]

如何编写一个以可变参数为参数的Haskell函数

我试图创build一个函数,获取一个可变参数作为参数 ,即 func :: (a -> … -> a) -> a 我怎么能做到这一点? 我读过关于polyvariadic函数 ,我敢肯定, Oleg已经做到了 ,但是我迷失了,试图将函数的模式应用到函数中,并且使用可变参数作为参数。 特别是Olegs的方法似乎只与格拉斯哥扩展工作,我希望解决scheme在纯粹的Haskell 98(如Text.Printf呢 )工作。 我问的原因是我试图build立一个函数,它将一个布尔函数作为一个参数,并检查它是否是一个重言式,即 isTautology :: (Bool -> … -> Bool) -> Bool 所以你可以input: isTautology (\x -> x && not x) isTautology (\xy -> x && y || not y) 我的问题是,我一直在阅读的诀窍是使返回types的typesvariables(以便它可以是结果或另一个函数),但我的返回types是固定的(Bool)。

Collectors.toList()返回什么样的List <E>?

我正在阅读“Lambda:Libraries”(图书馆版)的状态 ,并对一个声明感到惊讶: 根据Streams部分,有以下几点: List<Shape> blue = shapes.stream() .filter(s -> s.getColor() == BLUE) .collect(Collectors.toList()); 该文件没有说明实际是什么shapes ,我不知道它是否重要。 令我困惑的是:这个代码块返回什么样的具体List ? 它将variables分配给List<Shape> ,这是完全正确的。 stream()和filter()决定使用什么样的列表。 Collectors.toList()既不指定List的具体types。 那么,这里使用了List 具体types(子类)呢? 有任何保证吗?

entity framework使用连接方法和lambdas进行连接

看来有不同的方式来使用linq进行连接。 一个更简单,只需要join如下表格: var found = from c in s.categories join cm in s.categorymaps on c.CategoryId equals cm.ChildCategoryId select c; 还有另外一种使用lambdaexpression式的方式,我正在试图弄清楚如何使用这个语法来连接。 任何人都可以提供详细的解释和大量的例子的链接? 或者只是简单地演示如何使用这个相当混乱的语法示例? var x = _session.All<category>().Join<categorymap,category, ….

在C#中使用Lambda的一次性事件

我发现自己经常这样做: – EventHandler eh = null; //can't assign lambda directly since it uses eh eh = (s, args) => { //small snippet of code here ((SomeType)s).SomeEvent -= eh; } variableOfSomeType.SomeEvent += eh; 基本上我只想附加一个事件处理程序来监听事件的一个镜头,在此之后,我不再想留下来。 很多时候,“代码snippert”只是一行。 我的头脑有点麻木,我确定必须有一些我可以做的事情,所以我不需要重复所有这些开销。 请记住, EventHandler可能是EventHandler<T> 。 任何想法,我可以整理代码的重复部分,只是将代码段留在Lambda中?

Lambdaexpression式作为类模板参数

可以使用lambdaexpression式作为类模板参数吗? (请注意,这是一个非常不同的问题,它会询问一个lambdaexpression式本身是否可以模板化。) 我问你是否可以做这样的事情: template <class Functor> struct Foo { }; // … Foo<decltype([]()->void { })> foo; 这在例如一个类模板具有不同的参数(如equal_to或者其他的东西)的情况下是有用的,这些参数通常被实现为equal_to函子。 例如,假设我想实例化一个使用我自己的自定义相等比较函数的哈希表。 我希望能够这样说: typedef std::unordered_map< std::string, std::string, std::hash<std::string>, decltype([](const std::string& s1, const std::string& s2)->bool { /* Custom implementation of equal_to */ }) > map_type; 但是我在GCC 4.4和4.6上testing了这个,并且不起作用,显然是因为由lambdaexpression式创build的匿名types没有默认的构造函数。 (我记得与boost::bind类似的问题。)是否有一些原因,标准草案不允许这样做,或者我错了,它是允许的,但GCC只是落后于他们的实施?