OCaml学习:调用函数后复用返回值的语法问题求助
OCaml 函数返回值复用语法修正
你编写的代码中使用->承接函数返回值的写法不符合OCaml语法规则,OCaml 中需要使用let 变量名 = 表达式 in的语法,将前序表达式的返回值绑定到本地变量后,才能在后续逻辑中复用该值。
最简修正代码
let avg_veggie_kcal name fd = let x = find_by_name name fd in avg x.ingredients
代码说明
- 先通过
let x = find_by_name name fd in将查询到的食物记录绑定到变量x - 后续可以直接通过
x访问记录的ingredients字段,也可以在in后的任意位置复用x,不需要重复调用find_by_name函数
多场景复用示例
如果需要多次使用该返回值,直接在in后的代码块中多次引用变量即可,不需要重复执行查询逻辑:
let avg_veggie_kcal name fd = let food = find_by_name name fd in (* 第一次复用:打印食物名称 *) Printf.printf "待计算食物:%s\n" food.name; (* 第二次复用:统计配料数量 *) let count = List.length food.ingredients in Printf.printf "配料总数:%d\n" count; (* 第三次复用:计算热量平均值 *) avg food.ingredients
注:如果find_by_name返回的是可选类型(option),需要先对返回值做模式匹配处理,避免访问字段时报错。
内容的提问来源于stack exchange,提问作者col.ulb
相关产品推荐
相关产品推荐

