这是拉姆达吗?如果不是,那是什么?
Is this lambda? if not what is it?
几天前,我正在尝试来自 Devart 的新 ORM delphi,称为 EntityDAC,我正在阅读特定于 LINQ 部分的文档,当我看到类似以下内容时:
Linq.From(Emp).Where(Emp['Sal'] > 1000)
不得不说,我第一眼看到它就把我叫醒了。表达式 "Emp['Sal'] > 1000" 不是 lambda 表达式?!因为试用版是这个组件,所以我无法弄清楚 function/procedure 是如何声明的。
参考:http://www.devart.com/entitydac/docs/ -> Linq 查询 -> Linq 语法 -> 向下滚动到 Where session
I mentioned this in a blog post a few months ago.我没有来源可看,但几乎可以肯定是这样完成的:
- 表达式
Emp['Sal']
return 是 record
类型的值
- 这条记录声明了运算符重载
- Delphi 语言将运算符重载定义为函数,并且不要求它们 return 任何指定或直观的类型。因此,这里的
>
运算符不是 return 布尔值,而是另一条记录。
- 通过链接这些运算符,可以创建一个表达式树,可以由它们的 LINQ 求值器求值。
几天前,我正在尝试来自 Devart 的新 ORM delphi,称为 EntityDAC,我正在阅读特定于 LINQ 部分的文档,当我看到类似以下内容时:
Linq.From(Emp).Where(Emp['Sal'] > 1000)
不得不说,我第一眼看到它就把我叫醒了。表达式 "Emp['Sal'] > 1000" 不是 lambda 表达式?!因为试用版是这个组件,所以我无法弄清楚 function/procedure 是如何声明的。
参考:http://www.devart.com/entitydac/docs/ -> Linq 查询 -> Linq 语法 -> 向下滚动到 Where session
I mentioned this in a blog post a few months ago.我没有来源可看,但几乎可以肯定是这样完成的:
- 表达式
Emp['Sal']
return 是record
类型的值 - 这条记录声明了运算符重载
- Delphi 语言将运算符重载定义为函数,并且不要求它们 return 任何指定或直观的类型。因此,这里的
>
运算符不是 return 布尔值,而是另一条记录。 - 通过链接这些运算符,可以创建一个表达式树,可以由它们的 LINQ 求值器求值。