You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在OpsCode Chef中调用Lambda实现运行时求值?

Chef中Lambda调用获取实际值的正确方法

你当前的代码仅定义了Lambda(Proc)对象,但并未执行它,因此输出的是Lambda对象本身而非计算后的MD5哈希值。

要获取Lambda内部代码的执行结果,需要调用Lambda对象,常用的几种调用语法如下:

  • 使用call方法:md5.call
  • 使用方括号语法:md5[]
  • 使用圆括号(Ruby 1.9及以上版本支持):md5.()

修改你的代码示例,调用Lambda即可得到实际的MD5值:

md5 = lambda { Digest::MD5.file("#{some_file}").hexdigest }
pp "md5: #{md5.call}"

如果需要直接在表达式中执行Lambda,也可以写成:

pp "md5: #{lambda { Digest::MD5.file("#{some_file}").hexdigest }.call}"

这种方式正好满足你在运行时求值的需求,Lambda内部的代码会等到调用时才执行,确保some_file变量使用的是运行时的最新值。

内容的提问来源于stack exchange,提问作者Ronald Top

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 03:27:05