gpt4 book ai didi

list - 如何将函数仅映射到列表中的某些元素?

转载 作者:行者123 更新时间:2023-12-01 07:32:03 25 4
gpt4 key购买 nike

例如。如果您有函数 (fun x -> x+1)并且你想把它映射到 [1; 2; 3] .但是您只想在 x=1 时映射它,因此输出为 [2; 2; 3] .你怎么做到这一点?

使用 OCaml,我尝试过:

let rec foo (input : int list) : int list =
match input with
| [] -> []
| hd::tl -> List.map (fun x -> if x=1 then (x+1)) input;;

我试过“何时”语句,但无济于事。

最佳答案

else这里缺少分支。

您快到了。你只需要做一个完整的 if/else 语句:
if x=1 then (x+1) else x
OCaml 需要上述表达式的任何分支上的返回值。

要清楚,when守卫在这里无关紧要,因为它用于条件模式匹配。由于在这种情况下模式匹配是多余的,您的函数可以缩短很多:

let foo input =
List.map (fun x -> if x=1 then x+1 else x) input

关于list - 如何将函数仅映射到列表中的某些元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8517534/

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