ruby-on-rails - Ruby 中 lambda 和 -> 运算符的区别

标签 ruby-on-rails ruby lambda

以下两个作用域生成相同的结果,哪种语法更可取,还有其他区别吗?

scope :paid, lambda { |state| where(state: state) }

scope :paid, ->(state) { where(state: state) }

最佳答案

出于可读性原因,最好对单行 block 使用新语法 ->(在 Ruby 1.9 中引入),对多行 block 使用 lambda。示例:

# single-line
l = ->(a, b) { a + b }
l.call(1, 2)

# multi-line
l = lambda do |a, b|
  tmp = a * 3
  tmp * b / 2
end
l.call(1, 2)

这似乎是在 bbatsov/ruby-style-guide 中建立的社区公约.

所以,在你的情况下,会更好:

scope :paid, ->(state) { where(state: state) }

关于ruby-on-rails - Ruby 中 lambda 和 -> 运算符的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28215047/

相关文章:

ruby-on-rails - newrelic_rpm,rails gem显示没有开发路线

Ruby 线程的输出顺序?

ruby-on-rails - Rails 应用程序的 SaaS 计费 : Chargify, PayPal 或...?

lambda - 列表应该是一个 lambda 表达式

c# - C# Expression<TDelegate> 的通用约束 - 无法隐式转换类型

c# - 嵌套组 Linq 查询与 Groupby 扩展方法

ruby-on-rails - 当 find 涉及单个属性但 create 涉及多个属性时实现 find_or_create_by

java - 如何在 Sun Solaris 11 上将 java 版本从 1.6.0 降级到 java 1.5.0

ruby-on-rails - rails 和重构,针对 vim 用户的建议工具和技术?

javascript - 如何使 ViewComponent 与 Importmap-Rails 一起工作?