Asp*_*pen 3 ocaml functional-programming if-statement list map
例如,如果您有一个功能,(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;;
Run Code Online (Sandbox Code Playgroud)
而且我试过'何时'的陈述,但无济于事.
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
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
183 次 |
最近记录: |