Lambda 表达式的非常简单的解释

发布于 2024-11-06 20:37:40 字数 62 浏览 0 评论 0原文

我正在寻找一个非常简单 - 基本 - 没有硬核编程的胡言乱语,只是用外行人的术语概括了 Lambda 表达式。

I am looking for a very simple - basic - no hardcore programming mumbo jumbo, simply put a generalized overview of a Lambda Expression in layman's terms.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

哽咽笑 2024-11-13 20:37:40

简而言之,lambda 表达式是一个可重用的表达式,它接受多个参数:

x => x + 1;

上面的表达式为“对于给定的 x,返回 x + 1”。

在 .NET 中,这很强大,因为它可以编译为匿名委托,这是一个无名函数,您可以在代码中内联声明并计算以获取值:

int number = 100;

Func<int, int> increment = x => x + 1;

number = increment(number); // Calls the delegate expression above.

但是,lambda 表达式的真正威力在于它可以使用初始化表达式本身的内存表示。

Expression<Func<int, int>> incrementExpression = x => x + 1;

这意味着您可以将该表达式赋予 LINQ to SQL 之类的东西,它可以理解该表达式的含义,并将其转换为具有相同含义的 SQL 语句。这就是 lambda 与普通方法和委托非常不同的地方,通常也是混乱开始的地方。

A lambda expression is, simply put, a re-useable expression which takes a number of arguments:

x => x + 1;

The above expression reads "for a given x, return x + 1".

In .NET, this is powerful, because it can be compiled into an anonymous delegate, a nameless function you can declare inline with your code and evaluate to get a value:

int number = 100;

Func<int, int> increment = x => x + 1;

number = increment(number); // Calls the delegate expression above.

However, the real power of a lambda expression is that it can be used to initialize an in-memory representation of the expression itself.

Expression<Func<int, int>> incrementExpression = x => x + 1;

This means that you can give that expression to something like LINQ to SQL and it can understand what the expression means, translating it into a SQL statement that has the same meaning. This is where lambdas are very different from normal methods and delegates, and normally where the confusion begins.

比忠 2024-11-13 20:37:40

Lambda 表达式是内联函数,其语法与常规函数不同。

用于计算数字平方的示例 Lambda 表达式。

 x => x * x

Lambda Expressions are inline functions that have a different syntax to regular functions.

Example Lambda Expression for squaring a number.

 x => x * x
唯憾梦倾城 2024-11-13 20:37:40

一个小的未命名内联方法。这对你来说足够基本了吗?我不确定你到底在寻找什么。

您还用“外行”的话说 - 我认为您有一定程度的软件开发经验(所以不是一个完全的外行)

A small unnamed inline method. Is that basic enough for you? I'm not sure what you are looking for exactly.

You also said in "layman's" terms - I presume that you have some level of software development experience (so not a complete layman)

三五鸿雁 2024-11-13 20:37:40

在非函数式编程语言中,表达式(作用于变量)执行计算,并且它们执行一次这些计算。

Lambda 表达式允许您通过不同的语法代码进行定义(在表达式中),这些代码可以在列表上工作,并且在概念上可以被视为函数。


您可以将其简化为“它们允许您在表达式中定义函数”。


不太明白“为什么”。在我看来,原因更有趣。 Lambda 表达式允许操作函数和部分函数。

In non functional programming languages expressions (that act on variables) perform calculations and they perform those calculations once.

Lambda expressions allow you to define (in an expression) via different syntax code that can work on a list and can conceptually be considered a function.


You could simplify this to say "They let you define functions in expressions".


Does not quite get to the "why". The why is the more interesting, in my opinion. Lambda expression allow for the manipulation of functions and partial functions.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文