Tag: lambda

OrderBy在Lambdaexpression式中下降?

我知道在正常的Linq语法中,由orderby xxx descending是很容易的,但是我如何在Lambdaexpression式中做到这一点?

什么时候应该在ECMAScript 6中使用箭头function?

这个问题针对的是那些在即将到来的ECMAScript 6(Harmony)中已经考虑过代码风格并且已经使用过该语言的人。 有了() => {}和function () {}我们得到了两种非常类似的方式来在ES6中编写函数。 在其他语言中,lambda函数通常是匿名的,但在ECMAScript中,任何函数都可以是匿名的。 这两种types中的每一种都具有唯一的使用领域(即,当this需要显式地绑定或明确地不被绑定时)。 在这些领域之间有很多情况下,任何符号都可以做。 ES6中的箭头function至less有两个限制: 不要与new工作 修正了初始化时的范围限制 除了这两个限制外,箭头函数在理论上可以在几乎任何地方取代常规函数 在实践中使用它们的正确方法是什么? 如果使用箭头function,例如: “在任何地方工作”,即在任何地方,函数不必对thisvariables不可知,我们也不是创build一个对象。 只有“需要的地方”,即事件监听器,超时,需要绑定到某个范围 具有“短”function但不具有“长”function 仅限于不包含其他箭头function的function 我正在寻找的是在ECMAScript的未来版本中select适当的函数表示法的指南。 指导方针必须清楚,以便可以教给团队的开发人员,并保持一致,以便不需要不断地从一个函数表示法到另一个函数表示法的重构。

反映参数名称:滥用C#lambdaexpression式或语法辉煌?

我正在研究MvcContrib Grid组件,我着迷于它,但同时又被网格语法中使用的语法技巧击退了: .Attributes(style => "width:100%") 上面的语法将生成的HTML的样式属性设置为width:100% 。 现在,如果你注意,'风格'是无处指定的,从expression式中参数的名称推导! 我不得不深究这一点,发现“魔法”发生的地方: Hash(params Func<object, TValue>[] hash) { foreach (var func in hash) { Add(func.Method.GetParameters()[0].Name, func(null)); } } 所以确实,代码使用forms,编译时间,参数名称来创build属性名称 – 值对的字典。 由此产生的语法结构的确非常具有performance力,但同时又非常危险。 一般使用lambdaexpression式可以replace所使用的名称而不会产生副作用。 我在书中看到一个例子,说collection.ForEach(book => Fire.Burn(book))我知道我可以写在我的代码collection.ForEach(log => Fire.Burn(log)) , 它意味着相同东西 。 但是,在这里使用MvcContrib Grid语法突然间,我发现代码可以根据我为我的variablesselect的名称进行主动查找并进行分解。 那么C#3.5 / 4.0社区和lambdaexpression式爱好者的这种常见做法是什么? 或者是一个stream氓特技,我不应该担心?

C ++ 11 lambda实现和内存模型

我想了解一些关于如何正确思考C ++ 11闭包和std::function的信息,以及它们如何实现以及如何处理内存。 尽pipe我不相信过早的优化,但是在编写新代码的时候,我确实有习惯认真考虑我的select对性能的影响。 我也做了相当数量的实时编程,例如在微控制器和audio系统上,要避免非确定性内存分配/释放暂停。 因此,我想更好地了解何时使用或不使用C ++ lambdaexpression式。 我目前的理解是,没有捕获闭包的lambda完全像Ccallback。 但是,当通过值或引用捕获环境时,会在堆栈上创build一个匿名对象。 当一个函数必须返回一个值闭包时,它会把它包装在std::function 。 在这种情况下closures内存会发生什么? 它是从堆栈复制到堆? 每当std::function被释放时它是否被释放,也就是说,它是否像std::shared_ptr一样被引用计数? 我想在一个实时系统中,我可以设置一个lambda函数链,将B作为延续parameter passing给A,以便创build一个处理pipe道A->B 在这种情况下,A和Bclosures将被分配一次。 虽然我不确定这些是否会被分配在堆栈或堆上。 但是总的来说,这在实时系统中似乎是安全的。 另一方面,如果B构造了一些返回的lambda函数C,那么C的内存将被重复地分配和释放,这对于实时使用是不可接受的。 在伪代码中,我认为将是一个实时安全的DSP环路。 我想执行处理块A然后B,其中A调用它的参数。 这两个函数都返回std::function对象,所以f将是一个std::function对象,其环境存储在堆中: auto f = A(B); // A returns a function which calls B // Memory for the function returned by A is on the heap? // Note that A and B may […]

如何在不使用string名称的情况下提升PropertyChanged事件

如果能够在不明确指定更改属性的名称的情况下引发“PropertyChanged”事件,那将是一件好事。 我想要做这样的事情: public string MyString { get { return _myString; } set { ChangePropertyAndNotify<string>(val=>_myString=val, value); } } private void ChangePropertyAndNotify<T>(Action<T> setter, T value) { setter(value); PropertyChangedEventHandler handler = PropertyChanged; if (handler != null) { handler(this, new PropertyChangedEventArgs(setter.Method.Name)); } } 在这种情况下,收到的名称是lambda-method的名称:“<set_MyString> b__0”。 我可以肯定,修剪“<set_”和“> b__0”将始终提供正确的属性名称? 有没有其他通知有关财产变化(从财产本身)? 谢谢。

LINQ – 查询语法与方法链&lambda

有没有人坚持任何规则(或者你是否坚持你的雇主的任何规则?)当select使用LINQ查询语法或一个LINQ扩展方法内的Lambdaexpression式? 这适用于任何实体,SQL,对象,任何东西。 在我们的工作场所,我的老板根本就不喜欢lambda,他会使用查询语法来处理任何事情,在某些情况下,我发现它的可读性较差。 var names = collection.Select(item => item.Name); var names = from item in collection select item.Name; 也许当添加一个条件,我觉得Lambda有点混乱,在哪里 var names = collection.Where(item => item.Name == "Fred") .Select(item => item.Name); var names = from item in collection where item.Name == "Fred" select item.Name; 出于兴趣:编译器如何处理这个? 有谁知道上面的LINQ查询将如何编译成lambda? 是否会为每个元素调用Name属性? 我们可以这样做,并可能提高性能? 这是否意味着lambda在性能方面稍微有点可控性? var names = collection.Select(item => item.Name) .Where(name […]

什么是Lambda?

有人能够很好地描述Lambda是什么吗? 我们有一个标签,他们在C#问题的秘密,但我还没有find一个很好的定义和解释,他们是在什么位置。

在C#中使用Action委托

我正在与C#中的Action Delegates合作,希望能够更多地了解它们并思考它们可能的用处。 有没有人使用行动委托,如果是的话,为什么? 或者你能举出一些可能有用的例子吗?

用委托或lambda包装StopWatch时间?

我正在写这样的代码,做一些快速和肮脏的时间: var sw = new Stopwatch(); sw.Start(); for (int i = 0; i < 1000; i++) { b = DoStuff(s); } sw.Stop(); Console.WriteLine(sw.ElapsedMilliseconds); 当然,有一种方法可以把这个时间代码称为一个奇怪的.NET 3.0 lambda,而不是(上帝禁止)剪切和粘贴它几次,并用DoSomethingElse(s)代替DoStuff(s) ? 我知道这可以作为Delegate完成,但我想知道lambda的方式。

Rails 3,has_one / has_many和lambda条件

在这里我的模特: class User < ActiveRecord::Base has_many :bookmarks end class Topic < ActiveRecord::Base has_many :bookmarks end class Bookmark < ActiveRecord::Base belongs_to :user belongs_to :topic attr_accessible :position validates_uniqueness_of :user_id, :scope => :topic_id end 我想用current_user获取关联bookmark所有topics 。 ATM,我这样做: Topic.all.each do |t| bookmark = t.bookmarks.where(user_id: current_user.id).last puts bookmark.position if bookmark puts t.name end 这是丑陋的,做太多的数据库查询。 我想这样的东西: class Topic < ActiveRecord::Base has_one […]