Tag: lambda

作为const引用的Lambda捕获?

是否有可能通过在lambdaexpression式中的const引用捕获? 我想要下面标记的任务失败,例如: #include <cstdlib> #include <vector> #include <string> #include <algorithm> using namespace std; int main() { string strings[] = { "hello", "world" }; static const size_t num_strings = sizeof(strings)/sizeof(strings[0]); string best_string = "foo"; for_each( &strings[0], &strings[num_strings], [&best_string](const string& s) { best_string = s; // this should fail } ); return 0; } 更新:由于这是一个老问题,如果C ++ 14中有设施来帮助解决这个问题,可能会更新它。 […]

了解Java 8中的Spliterator,Collector和Stream

我无法理解Java 8中的Stream接口,特别是与Spliterator和Collector接口有关的接口。 我的问题是,我简直无法理解Spliterator和Collector接口,结果Stream接口对我来说仍然有些模糊。 Spliterator和Collector究竟是什么,我怎样才能使用它们? 如果我愿意写我自己的Spliterator或Collector (也许是我自己的Stream在这个过程中),我该怎么做,而不是做什么? 我阅读了一些散布在networking上的例子,但由于这里的一切都是新的,可能会有所变化,示例和教程仍然非常稀less。

LINQ:“包含”和一个Lambda查询

我有一个列表,其中包含枚举,它是一个标准的枚举,但有一个属性附加到一个扩展方法返回枚举的CHAR(见下面的GetCharValue),扩展工程很好。 现在我有(linq的另一个扩展方法) public static IQueryable<Building> WithStatus(this IQueryable<Building> qry, IList<BuildingStatuses> buildingStatus) { return from v in qry where buildingStatus.Where(item => item.GetCharValue() == v.Status) select v; } 我基本上需要说“返回”查询中的一切,但只有当v.Status在buildingStatus中…但记住buildingStatus是枚举的ILIST,所以我必须调用GetCharValue。 以前我有一些帮助,我认为正确的语法是 buildingStatus.Contains (v.Status) 但问题是在这里,buildingStatus是枚举的枚举,所以我必须调用GetCharValue()在Ilist中的每个项目之前说包含.. 我以为有什么特别的方式来做这个lambda使用Contains像这样 – 当然这是行不通的 where buildingStatus.Contains(item => item.GetCharValue() == v.Status) 谁能帮忙?

为什么一些C#lambdaexpression式编译为静态方法?

正如你在下面的代码中看到的,我已经声明了一个Action<>对象作为variables。 有人请让我知道为什么这个行动方法委托行为像一个静态的方法? 为什么在下面的代码中返回true ? 码: public static void Main(string[] args) { Action<string> actionMethod = s => { Console.WriteLine("My Name is " + s); }; Console.WriteLine(actionMethod.Method.IsStatic); Console.Read(); } 输出:

Lambda捕获和参数具有相同的名称 – 谁影响其他? (铿锵vs gcc)

auto foo = "You're using g++!"; auto compiler_detector = [foo](auto foo) { std::puts(foo); }; compiler_detector("You're using clang++!"); 铿锵声++ 3.6.0和更新的打印出“你正在使用铛++!” 并警告捕捉 foo未被使用。 g ++ 4.9.0和更新版本打印出“您正在使用g ++!” 并警告参数 foo未被使用。 什么编译器在这里更精确地遵循C ++标准? wandbox例子

如何将string转换为其等价的LINQexpression式树?

这是原始问题的简化版本。 我有一个叫Person的类: public class Person { public string Name { get; set; } public int Age { get; set; } public int Weight { get; set; } public DateTime FavouriteDay { get; set; } } …让我们说一个实例: var bob = new Person { Name = "Bob", Age = 30, Weight = 213, FavouriteDay = '1/1/2000' } […]

我怎样才能从Java 8stream内引发CHECKEDexception? (不包装成未经检查的例外)

我怎样才能从Java 8stream/ lambdas中引发CHECKEDexception? 换句话说,我想编译这样的代码: public List<Class> getClasses() throws ClassNotFoundException { List<Class> classes = Stream.of("java.lang.Object", "java.lang.Integer", "java.lang.String") .map(className -> Class.forName(className)) .collect(Collectors.toList()); return classes; } 此代码不会编译,因为上面的Class.forName()方法会抛出ClassNotFoundException 。 请注意,我不想将检查的exception包装在运行时exception中,而是抛出包装的未经检查的exception。 我想抛出检查exception本身 ,而不添加丑陋的try / catches到stream。

为什么不在lambda打印工作?

为什么这不工作? lambda: print "x" 这不是一个单一的陈述,还是其他的东西? 文档似乎有点稀疏,什么是允许的lambda …

我在哪里标记一个lambdaexpression式asynchronous?

我有这个代码: private async void ContextMenuForGroupRightTapped(object sender, RightTappedRoutedEventArgs args) { CheckBox ckbx = null; if (sender is CheckBox) { ckbx = sender as CheckBox; } if (null == ckbx) { return; } string groupName = ckbx.Content.ToString(); var contextMenu = new PopupMenu(); // Add a command to edit the current Group contextMenu.Commands.Add(new UICommand("Edit this Group", (contextMenuCmd) => […]

如何将具有相同types项目的列表合并到单个项目列表中?

这个问题令人困惑,但是如下面的代码所描述的那样更加清楚: List<List<T>> listOfList; // add three lists of List<T> to listOfList, for example /* listOfList = new { { 1, 2, 3}, // list 1 of 1, 3, and 3 { 4, 5, 6}, // list 2 { 7, 8, 9} // list 3 }; */ List<T> list = null; // how to merger all […]