gpt4 book ai didi

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

转载 作者:数据小太阳 更新时间:2023-10-29 06:51:56 25 4
gpt4 key购买 nike

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

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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com