0
我是F#noob。我试图创建一个函数来格式化结果元组,最后一个元素可能存在也可能不存在 - 因为它旨在保存在处理过程中可能被捕获的任何异常。为什么这个F#函数需要额外的sprintf来编译?
let formatResults resultsTuple =
match resultsTuple with
|(name1, name2, diff, count, correlation, None) -> (sprintf "%A and %A with diff %A had %A pairs and showed a correlation coefficient of %A" name1 name2 diff count correlation)
|(name1, name2, diff, _, _, Some(ex)) -> (sprintf "Error: %A and %A with diff %A threw exception %A" name1, name2, diff, ex) |> sprintf "%A"
请参见最后一行我如何将第一个sprintf的结果传送到第二个sprintf?基本上,它告诉我我在某处有一个语法错误,而且程序没有按照我的想法做。 (初步测试似乎给出了合理的输出,但它让我感到紧张。)
为什么要这样编译,但这不行?它给了我编译错误“这个表达式应该有字符串类型,但是这里有类型'a *'b *'c *'d”。
let formatResults resultsTuple =
match resultsTuple with
|(name1, name2, diff, count, correlation, None) -> sprintf "%A and %A with diff %A had %A pairs and showed a correlation coefficient of %A" name1 name2 diff count correlation
|(name1, name2, diff, _, _, Some(ex)) -> sprintf "Error: %A and %A with diff %A threw exception %A" name1, name2, diff, ex
就是这样。我知道它必须是简单可笑的东西。谢谢。 – speckledcarp