Tag: lambda

Dispatcher.BeginInvoke:不能将lambda转换为System.Delegate

我试图调用System.Windows.Threading.Dispatcher.BeginInvoke 。 该方法的签名是这样的: BeginInvoke(Delegate method, params object[] args) 我试图将它传递给一个Lambda,而不必创build一个Delegate。 _dispatcher.BeginInvoke((sender) => { DoSomething(); }, new object[] { this } ); 它给我一个编译器错误,说我不能将lambda转换为System.Delegate。 委托的签名将一个对象作为参数并返回void。 我的lambda匹配这个,但它不工作。 我错过了什么?

Python中lambdaexpression式的赋值

我有一个对象的列表,我想删除除了一个空的所有对象,使用filter和lambdaexpression式。 例如,如果input是: [Object(name=""), Object(name="fake_name"), Object(name="")] …那么输出应该是: [Object(name=""), Object(name="fake_name")] 有没有办法给lambdaexpression式添加一个赋值? 例如: flag = True input = [Object(name=""), Object(name="fake_name"), Object(name="")] output = filter( (lambda o: [flag or bool(o.name), flag = flag and bool(o.name)][0]), input )

在头文件中使用lambda是否违反了ODR?

以下内容可以写在一个头文件中: inline void f () { std::function<void ()> func = [] {}; } 要么 class C { std::function<void ()> func = [] {}; C () {} }; 我猜在每个源文件中,lambda的types可能是不同的,因此在std::function ( target_type的结果将不同)中包含的types。 这是否违反ODR( 一个定义规则 ),尽pipe看起来像一个共同的模式和合理的事情? 第二个示例是否每次都违反了ODR,或者只有至less一个构造函数在头文件中?

什么是Java中的“SAMtypes”?

阅读Java-8规范,我总是看到“SAMtypes”的引用。 我一直无法find这是什么的明确解释。 什么是SAMtypes,什么时候可以使用什么样的情况?

C ++ 0x lambda捕获的值总是const?

有没有办法通过价值捕获,并使捕获的值非常量? 我有一个库函子,我想捕获和调用非const的方法,但应该是。 以下不编译,但使foo :: operator()const修复它。 struct foo { bool operator () ( const bool & a ) { return a; } }; int _tmain(int argc, _TCHAR* argv[]) { foo afoo; auto bar = [=] () -> bool { afoo(true); }; return 0; }

什么是在C#lambdavariables的范围?

我对lambdavariables的范围感到困惑,比如下面的例子 var query = from customer in clist from order in olist .Where(o => o.CustomerID == customer.CustomerID && o.OrderDate == // line 1 olist.Where(o1 => o1.CustomerID == customer.CustomerID) // line 2 .Max(o1 => o1.OrderDate) // line 3 ) select new { customer.CustomerID, customer.Name, customer.Address, order.Product, order.OrderDate }; 在第一行中,我已经声明了一个lambdavariables“o”,这意味着我不能在第二行再次声明它(或者至less编译器会抱怨,如果我尝试的话)但是即使'o1'已经存在,它也不会抱怨第3行?? 什么是lambdavariables的范围?

以很多字段排列列表(C#)?

我想要在C#中的许多字段,而不是一个订单的对象列表。 例如,让我们假设我有一个叫做X的类,它有两个属性A和B,我有以下对象: object1 => A =“a”,B =“h” object2 => A =“a”,B =“c” object3 => A =“b”,B =“x” object4 => A =“b”,B =“b” 我想先用A属性来排列列表,当它们是等于的时候,用B元素sorting,那么顺序是: “a”“c” “a”“h” “b”“b” “b”“x” 据我所知,OrderBy方法按一个参数sorting。 问题 :如何通过多个字段来订购C#列表? 非常感谢你

如何用lambdasorting?

sort(mMyClassVector.begin(), mMyClassVector.end(), [](const MyClass & a, const MyClass & b) { return a.mProperty > b.mProperty; }); 我想使用lambda函数来sorting自定义类,而不是绑定实例方法。 但是,上面的代码产生错误: 错误C2564:'const char *':一个函数式转换为内置types只能带一个参数 它适用于boost::bind(&MyApp::myMethod, this, _1, _2) 。

Java 8:在lambdaexpression式中强制检查exception处理。 为什么是强制性的,不可选

我正在使用Java 8中的新lambda特性,并发现Java 8提供的实践非常有用。 不过,我想知道是否有一个好的方法来解决以下情况。 假设你有一个对象池封装器,需要某种工厂来填充对象池,例如(使用java.lang.functions.Factory ): public class JdbcConnectionPool extends ObjectPool<Connection> { public ConnectionPool(int maxConnections, String url) { super(new Factory<Connection>() { @Override public Connection make() { try { return DriverManager.getConnection(url); } catch ( SQLException ex ) { throw new RuntimeException(ex); } } }, maxConnections); } } 在将函数接口转换为lambdaexpression式之后,上面的代码变得如下所示: public class JdbcConnectionPool extends ObjectPool<Connection> { public ConnectionPool(int […]

无法将lambdaexpression式转换为“string”types,因为它不是委托types

我正在使用像这样的LINQ lambdaexpression式: int Value = 1; qryContent objContentLine; using (Entities db = new Entities()) { objContentLine = (from q in db.qryContents where q.LineID == Value orderby q.RowID descending select q).FirstOrDefault(); } 但是,我收到以下错误: 无法将lambdaexpression式转换为“string”types,因为它不是委托types