Lambdas
严格参数数量的过程对象
Lambdas 是 CoddyKit 上的免费 Ruby Academy 课时。 这是第 3 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Ruby Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Ruby Academy 课程共包含 4 节课。
严格参数数量的 Proc 对象
lambda 函数是一种特殊的 Proc 对象,行为更像普通方法:它会检查参数数量,并以通常的方式处理 return。当您希望获得可预测、类似方法的行为时,可以使用它。
square = lambda { |x| x * x }
puts square.call(6)箭头式 lambda 函数
箭头语法 -> 也被称为“箭头式 lambda 函数”,是编写 lambda 函数最常见的方式。参数放在圆括号中。
add = ->(a, b) { a + b }
puts add.call(4, 5)调用 lambda 函数
lambda 函数支持与 Proc 对象相同的调用方式:.call、.() 和 [ ]。
triple = ->(x) { x * 3 }
puts triple.call(2)
puts triple.(2)
puts triple[2]严格检查参数
与 Proc 对象不同,如果传入的参数数量不正确,lambda 函数会引发 ArgumentError。这有助于尽早发现错误。
greet = ->(name) { "Hi #{name}" }
puts greet.call("Sam")
begin
greet.call
rescue ArgumentError => e
puts "Error: #{e.message}"
end返回语句保持局部作用域
lambda 函数中的 return 只会退出该 lambda 函数,随后程序继续执行。这与方法的行为一致。
def demo
l = -> { return 10 }
l.call
20 # this runs
end
puts demo检查是否为 lambda 函数
Proc 对象和 lambda 函数都是 Proc 的实例。使用 lambda? 可以区分它们。
l = ->(x) { x }
pr = proc { |x| x }
puts l.lambda?
puts pr.lambda?不带参数的 lambda 函数
当 lambda 函数不接收参数时,可以省略圆括号。
now = -> { Time.now.year }
puts "Year: #{now.call}"多行 lambda 函数
lambda 函数可以跨越多行。最后一个表达式就是返回值。
classify = ->(n) {
return "zero" if n.zero?
n.positive? ? "positive" : "negative"
}
puts classify.call(0)
puts classify.call(-3)将 lambda 函数传递给方法
和 Proc 对象一样,lambda 函数可以通过 & 转换为代码块,因此可以用于 map、select 等方法。
doubler = ->(n) { n * 2 }
p [1, 2, 3].map(&doubler)将 lambda 函数作为返回值
方法可以构建并返回一个 lambda 函数,让您能够即时创建专用函数。
def multiplier(by)
->(n) { n * by }
end
times10 = multiplier(10)
puts times10.call(5)整合运用
lambda 函数是严格遵循方法行为的 Proc 对象:
- 使用
lambda { }或->(args) { }编写。 - 它们会强制检查参数数量,并让
return保持在局部作用域内。 - 当正确性很重要,或您需要构建并返回函数时,请使用它们。
is_even = ->(n) { n.even? }
p [1, 2, 3, 4, 5, 6].select(&is_even)快速检查
测试您对 lambda 函数的理解。
回顾
您学习了 lambda 函数:
- lambda 函数是严格的 Proc 对象,可使用
->编写。 - 它会强制检查参数数量。
return只会退出 lambda 函数。lambda?可以将它与普通 Proc 对象区分开。
area = ->(w, h) { w * h }
puts area.call(3, 4)常见问题解答
「Lambdas」课时是免费的吗?
是的 — 「Lambdas」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Ruby Academy 课程的其余内容,请升级到 CoddyKit PRO。 Ruby Academy 课程共包含 4 节课。
「Lambdas」这节课中我会学到什么?
严格参数数量的过程对象 你通过在浏览器中直接运行的动手代码来练习 Ruby Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。
学习 Ruby Academy 需要有经验吗?
无需任何先前经验。CoddyKit 上的 Ruby Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 3 节课,共 4 节。
「Lambdas」课时需要多长时间?
大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。
我能在这节 Ruby Academy 课中编写并运行代码吗?
能。每节 Ruby Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。