- 浏览: 3047790 次
- 性别:
- 来自: 海外
文章分类
- 全部博客 (430)
- Programming Languages (23)
- Compiler (20)
- Virtual Machine (57)
- Garbage Collection (4)
- HotSpot VM (26)
- Mono (2)
- SSCLI Rotor (1)
- Harmony (0)
- DLR (19)
- Ruby (28)
- C# (38)
- F# (3)
- Haskell (0)
- Scheme (1)
- Regular Expression (5)
- Python (4)
- ECMAScript (2)
- JavaScript (18)
- ActionScript (7)
- Squirrel (2)
- C (6)
- C++ (10)
- D (2)
- .NET (13)
- Java (86)
- Scala (1)
- Groovy (3)
- Optimization (6)
- Data Structure and Algorithm (3)
- Books (4)
- WPF (1)
- Game Engines (7)
- 吉里吉里 (12)
- UML (1)
- Reverse Engineering (11)
- NSIS (4)
- Utilities (3)
- Design Patterns (1)
- Visual Studio (9)
- Windows 7 (3)
- x86 Assembler (1)
- Android (2)
- School Assignment / Test (6)
- Anti-virus (1)
- REST (1)
- Profiling (1)
- misc (39)
- NetOA (12)
- rant (6)
- anime (5)
- Links (12)
- CLR (7)
- GC (1)
- OpenJDK (2)
- JVM (4)
- KVM (0)
- Rhino (1)
- LINQ (2)
- JScript (0)
- Nashorn (0)
- Dalvik (1)
- DTrace (0)
- LLVM (0)
- MSIL (0)
最新评论
-
mldxs:
虽然很多还是看不懂,写的很好!
虚拟机随谈(一):解释器,树遍历解释器,基于栈与基于寄存器,大杂烩 -
HanyuKing:
Java的多维数组 -
funnyone:
Java 8的default method与method resolution -
ljs_nogard:
Xamarin workbook - .Net Core 中不 ...
LINQ的恶搞…… -
txm119161336:
allocatestlye1 顺序为 // Fields o ...
最近做的两次Java/JVM分享的概要
如题。我总是后知后觉诶。不过这提案有意思……
之前我在C#与Ruby 1.8在作用域与闭包上的比较的回复里还说C++没有闭包所以不知道它是什么东西也没关系,反正也用不了。这在当前的C++里是没错,不过未来版本的C++里我们也能用到闭包了。
按照C++98(或者叫ISO/IEC 14882 : 1998)的话,要定义一块代码然后把它传来传去的话,我们需要的是一个functor——能重载()运算符的C++的强大能力的一种体现。但是C++的语法不允许我们在一个表达式里定义一个类,所以要使用一个“只用一次”的functor时,我们还非得到函数外面去定义一个有名字的functor类型,很是麻烦。
Boost.Lambda应对就地定义一个在函数里就地定义匿名类型的functor的需求而做了个不错的实现。Boost库里也有binder在简单的情况下用起来还算方便。
Herb Sutter有篇介绍文: Trip Report: February/March 2008 ISO C++ Standards Meeting, 2008/3/29
看到C++0x那lambda表达式的闭包可以有选择性的捕获外部变量我就湿了啊……
不过话说回来,这闭包跟D 2.0在2.007版本之前的状况一样,是不完整意义上的闭包:一旦离开了定义那个lambda表达式的inner most block之后,再调用那个lambda表达式时以reference方式捕获到的变量会发生什么变化未定义……
啊,到时间去找老师了。回来再写点什么。
之前我在C#与Ruby 1.8在作用域与闭包上的比较的回复里还说C++没有闭包所以不知道它是什么东西也没关系,反正也用不了。这在当前的C++里是没错,不过未来版本的C++里我们也能用到闭包了。
按照C++98(或者叫ISO/IEC 14882 : 1998)的话,要定义一块代码然后把它传来传去的话,我们需要的是一个functor——能重载()运算符的C++的强大能力的一种体现。但是C++的语法不允许我们在一个表达式里定义一个类,所以要使用一个“只用一次”的functor时,我们还非得到函数外面去定义一个有名字的functor类型,很是麻烦。
Boost.Lambda应对就地定义一个在函数里就地定义匿名类型的functor的需求而做了个不错的实现。Boost库里也有binder在简单的情况下用起来还算方便。
Herb Sutter有篇介绍文: Trip Report: February/March 2008 ISO C++ Standards Meeting, 2008/3/29
看到C++0x那lambda表达式的闭包可以有选择性的捕获外部变量我就湿了啊……
不过话说回来,这闭包跟D 2.0在2.007版本之前的状况一样,是不完整意义上的闭包:一旦离开了定义那个lambda表达式的inner most block之后,再调用那个lambda表达式时以reference方式捕获到的变量会发生什么变化未定义……
啊,到时间去找老师了。回来再写点什么。
发表评论
-
字符串的一般封装方式的内存布局 (0): 拿在手上的是什么
2013-11-04 18:22 21489(Disclaimer:未经许可请 ... -
字符串的一般封装方式的内存布局
2013-11-01 12:55 0(Disclaimer:未经许可请 ... -
关于string,内存布局,C++ std::string,CoW
2013-10-30 20:45 0(Disclaimer:未经许可请 ... -
struct做参数不能从寄存器传?
2013-08-28 23:33 0test test test struct Foo { i ... -
[入门级] 使用inline函数的陷阱
2011-04-21 22:39 0xxx.hpp xxx.inline.hpp inline ... -
C++的vtable的name mangling
2011-04-21 21:53 0_ZTV 开头 -
C++里用typedef struct...
2010-06-12 14:42 3886今天要写个东西,参照的一段C++代码里看到了诡异的东西,形式类 ... -
C++的虚方法调用的开销
2010-01-10 02:53 0不只是从vftbl找到函数指针那么简单而已。因为C++支持多继 ... -
C++求值顺序
2009-12-12 23:16 0呵呵,有个例子总是形 ... -
__fastcall由callee做栈平衡
2009-10-14 01:51 0#include <iostream> usin ... -
typedef...
2009-06-16 21:22 0原来函数指针能这样用的啊……原来typedef不只可以用来声明 ... -
拿vtable来玩玩
2009-06-04 03:53 0#include <iostream> usin ... -
从1加到N……我败了
2009-05-11 10:06 0有人提到Python比C++优越因为代码短而简洁,并举例说1加 ... -
delete NULL会怎样?
2009-04-22 10:03 8102原文在此:Can you delete a NULL poin ... -
Boost 1.35.0
2008-06-25 04:45 0Boost C++ Library Version 1.35. ... -
确定性析构在有指针的环境下的麻烦之处
2008-05-16 11:26 2622刚考完大软,心里还在 ... -
typename关键字的使用
2008-05-15 11:31 2907忘了……模板啊忘光了 T T 今天有同学考C++,后来问了我 ... -
又是宏……do..while(0)的用法
2008-05-04 20:24 4667真是的,我用C++还是太少了。这个宏以前明明见过的,但其存在的 ... -
将ANTLR生成的.tokens文件重格式化(C++版)
2008-03-28 02:02 2458相关链接: 将ANTLR生成的.tokens文件重格式化(Ru ... -
奇怪的宏
2007-11-05 22:19 2113我C++确实不怎么样,不过近来不得不再唤醒那远古的记忆……即使 ...
相关推荐
C++ 11引入了lambda表达式,这是一个强大...通过这些知识点,我们可以看到C++11的lambda表达式是如何简化代码、提高可读性和效率的。在VS2010及更高版本中,开发者可以充分利用这一特性,提升C++程序的设计和实现质量。
### C++ 中的 Lambda 表达式 #### 引言 C++11引入了许多重要的新特性,其中最显著的一项是Lambda表达式。这一特性极大地简化了代码编写过程,使得开发者能够更方便地创建匿名函数对象。Lambda表达式在很多场景下都...
Lambda表达式可以使用与其相同范围scope内的变量,这个引入符的作用就是表明,其后的lambda表达式以何种方式使用(正式的术语是“捕获”)这些变量(这些变量能够在lambda表达式中被捕获,其实就是构成了一个闭包)...
C++ Lambda表达式详解 C++ Lambda表达式是C++语言的一个重要特性,引入于C++11标准中。它可以作为函数对象使用,可以用来替代一些繁琐的函数声明和定义。Lambda表达式的基本语法结构如下:[capture list] ...
* lambda 表达式的闭包:lambda 表达式可以捕获外部变量,并将其作为闭包的一部分。 * 递归算法的优点:递归算法可以将复杂的问题分解成更小的子问题,从而使得问题变得更易解决。 * 递归算法的缺点:递归算法可能会...
Lambda表达式是Java编程语言中的一个关键特性,自Java 8开始引入,它极大地简化了函数式编程,尤其是在处理集合数据时。Lambda表达式的主要目的是为了创建匿名函数,即没有名字的函数,它可以被当作一个值传递给方法...
Lambda 表达式是 C# 编程语言中的一个重要概念,也是函数式编程的基础。Lambda 表达式可以被用作创建委托对象或表达式树类型。所有的 Lambda 表达式都使用操作符“=>“,表示“goes to (转变为)”。 Lambda 表达式...
Lambda表达式使得代码更加简洁、易读,同时也提升了程序的执行效率。在本文中,我们将深入探讨Lambda表达式的核心概念、语法以及它在实际开发中的应用。 一、Lambda表达式基础 1. **什么是Lambda表达式?** ...
1. **创建表达式树**:通过调用`Expression.Lambda`方法,我们可以创建一个表示Lambda表达式的表达式树。 2. **解析表达式树**:通过递归遍历表达式树,我们可以解析出查询操作的细节,如属性访问、条件判断、函数...
Java 8 的引入,尤其是Lambda表达式,对Java语言产生了深远的影响,它为Java开发者带来了更简洁、更灵活的编程方式。Lambda表达式是函数式编程的核心元素,它允许我们将函数作为方法参数传递,或者将代码块当作数据...
**C++ Lambda表达式**是C++编程语言中一个强大的特性,从C++11标准开始引入,到C++20标准进一步增强。Lambda表达式允许程序员在代码中定义匿名函数,即没有名称的函数,这极大地提高了代码的灵活性和可读性。本书...
C++之Lambda表达式 C++之Lambda表达式是C++11标准中引入的一种新的函数定义方式,用于定义匿名函数,使得代码更加灵活简洁。Lambda表达式与普通函数类似,也有参数列表、返回值类型和函数体,只是它的定义方式更...
Lambda 表达式,也被称作闭包,它使得 Java 语言变得更加灵活和具有函数式编程特性。在 Java 8 之前,如果要将一个行为(例如方法)作为参数传递给另一个方法,通常需要通过定义一个接口和一个实现该接口的匿名类。...
Java 8 的 Lambda 表达式是其最显著的新特性之一,它引入了一种更为简洁、函数式的编程风格。Lambda 表达式使得处理匿名函数变得更加简单,尤其在需要定义短小、无状态的代码块时,它们可以极大提高代码的可读性和...
Java 8 是一个重要的Java平台版本,因为它引入了许多新特性,其中最显著的就是Lambda表达式。...通过研究这个Demo,你可以深入了解Lambda表达式如何简化代码,提高生产力,并为你的Android项目带来现代编程实践。
此外,Lambda表达式也可以用于方法引用,比如对于已有的静态方法或对象的实例方法,可以直接引用而无需重新编写逻辑: ```java Collections.sort(people, Comparator.comparing(Person::getName)); ``` 这里使用了...
虽然Lambda表达式非常灵活,但它们也有一些限制,比如不能包含控制流语句(如`if`、`for`或`while`)以及无法访问局部变量(除非是闭包)。 总之,C# Lambda表达式提供了一种简洁的方式来定义函数,尤其在处理数据...
Java 8 引入了Lambda表达式,这是对传统编程方式的一大革新,它极大地简化了函数式编程,尤其是在处理集合和并发操作时。Lambda表达式是Java 8中的一种语法糖,它允许开发者以更简洁的方式定义无状态、无副作用的...