Expression.Lambda 中的 Tailcall 参数

发布于 2024-11-30 09:41:51 字数 217 浏览 0 评论 0原文

为尾部调用优化提供参数的原因是什么?

Expression.Lambda(Expression body,bool tailcall,
IEnumerable<ParameterExpression> Parameters)

只要它不会影响结果,为什么我们明确需要为其指定一个值。而且我觉得进行尾部调用优化总是更好。对此你有什么不同的想法吗

What is the reason behind giving a parameter for tailcall optimization in

Expression.Lambda(Expression body,bool tailcall,
IEnumerable<ParameterExpression> Parameters)

As long as it is not going affect the result why do we explicitly need to specify a value for it.And i feel it is always better to have tailcall optimization. Do you have different thought on this

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

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

发布评论

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

评论(1

时光无声 2024-12-07 09:41:51

这个设计有点搞笑。

tailcall 参数传递 true ,将尝试在 lambda 体内以尾部调用的形式调用尾部位置的方法。

尾部位置是方法调用返回的表达式的位置。

至于更好,那是主观的。

  • 尾调用往往总是较慢
  • 有一定的规则需要遵循(返回类型必须匹配或是引用)
  • 您没有用于调试的堆栈跟踪

The design is kinda funny.

Passing true for the tailcall parameter, will attempt to call method in a tail position as a tail call within the body of the lambda.

A tail position is where a method call is the expression being returned.

As for better, that is subjective.

  • Tail calls tend to be always slower
  • There are certain rules to follow (return types must match or be references)
  • You have no stacktrace for debugging
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文