【发布时间】:2023-11-08 06:05:01
【问题描述】:
在 F# 中,我试图获取给定列表的最后一个元素。我写了下面的代码
let rec findLast t =
match t with
| hd :: [] -> hd
| hd :: tl -> findLast tl
| _ -> -1
printfn "%A" (findLast [1,2,3,4,5])
但是当我尝试在 F# Interactive 中执行它时,它会抱怨如下
错误 FS0001:此表达式应具有类型 int 但这里有类型 'a * 'b * 'c * 'd * 'e
我只是想知道上面的代码有什么问题。我知道有不同的智能和优雅的方法可以从 F# 中的列表中获取最后一个元素。但我很想知道上面的代码有什么问题?
【问题讨论】:
-
列表元素由
;而不是,分隔。使用findLast [1;2;3;4;5]或仅使用findLast [1..5] -
在这里您可以找到每个 F# 程序员都会遇到的常见错误列表:fsharpforfunandprofit.com/troubleshooting-fsharp 还提到了提示“使用分号作为列表分隔符”。
标签: f# f#-interactive f#-3.0