【发布时间】:2021-01-19 04:18:24
【问题描述】:
我有点迷茫,我已经连续尝试了 2 个小时,试图让这段代码正常工作,但我迷路了。
let DropColumn list =
if List.exists List.isEmpty list then "empty value"
else
list |> List.map List.tail
这给了我一个错误错误 FS0001:类型“字符串”与类型“列表”不匹配
【问题讨论】:
-
“空值”是一个字符串。
List.map返回一个列表。 if \ else 块必须返回相同的数据类型。 -
是的,这就是我的想法,但是我该如何解决这个问题?
-
你无法解决没有意义的事情。此处的修复将取决于您实际需要对返回值执行的操作。我能想到至少四种可行的解决方案:1)返回原始列表,2)返回一个空列表,3)返回一个选项,4)引发异常。
-
很难说你想用这个函数做什么。
if表达式返回两种不同的数据类型。哪一个是正确的?字符串还是列表?你把什么传递给这个函数?你想检查什么?你想返回什么? -
好吧,我试图让它基本上“优雅地”失败,从某种意义上说,我不想用“failswith”引发异常,但我希望函数吐出错误输出,最好是自定义错误留言
标签: list recursion error-handling f#