有没有什么“简单”的方法? Ruby 中 procs 和 lambda 是什么的解释?

发布于 2024-08-11 03:41:45 字数 46 浏览 2 评论 0原文

对于 Ruby 中的 procs 和 lambdas 有什么“简单”的解释吗?

Are there any "simple" explanations of what procs and lambdas are in Ruby?

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

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

发布评论

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

评论(1

梦里°也失望 2024-08-18 03:41:46

Lambda(也存在于其他语言中)就像临时函数,仅为简单用途而创建,而不是执行一些复杂的操作。

当您使用像 Array#collect 这样接受 {} 中的块的方法时,您实际上是在创建一个仅用于该方法的 lambda/proc/block。

a = [1, 2, 3, 4]
# Using a proc that returns its argument squared
# Array#collect runs the block for each item in the array.
a.collect {|n| n**2 } # => [1, 4, 9, 16]
sq = lambda {|n| n**2 } # Storing the lambda to use it later...
sq.call 4 # => 16

请参阅 Wikipedia 上的匿名函数,以及一些有关 lambda 细微差别的其他问题 > 与 Proc 相比。

Lambdas (which exist in other languages as well) are like ad hoc functions, created only for a simple use rather than to perform some complex actions.

When you use a method like Array#collect that takes a block in {}, you're essentially creating a lambda/proc/block for only the use of that method.

a = [1, 2, 3, 4]
# Using a proc that returns its argument squared
# Array#collect runs the block for each item in the array.
a.collect {|n| n**2 } # => [1, 4, 9, 16]
sq = lambda {|n| n**2 } # Storing the lambda to use it later...
sq.call 4 # => 16

See Anonymous functions on Wikipedia, and some other SO questions for the nuances of lambda vs. Proc.

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