我应该首先对F#说新手,并且毫无疑问这是一个菜鸟问题。
我现在已经做了两个月的F#而且我一般都觉得F#令人沮丧的事情就是这样的错误。 “这里预计有类型的东西,但给了其他类型的东西。”
我记得我的老师说,与其他语言不同,F#不能自己弄清楚你指的是什么类型。
所以我的问题是你们如何定义函数输入的类型?
示例:
let FoneTwo y x =
System.Math.Sqrt(x^2+y^2)
printfn "%A" (FoneTwo 2.2 3.3)
这个错误表明浮点数是预期的,但是类型为String。这个字符串来自何处?在函数调用im中明确使用浮点数。所以我想我需要以某种方式指定y和x是一个浮点但是如何?
总的来说,我不仅在回答这个例子之后,而且是一个跟踪这个问题的一般规则或方法吗?因为通常情况会发生很多。
有人可以开导我吗?答案 0 :(得分:4)
请注意,运算符^
不是幂,它是字符串连接(用于ML兼容性)。
您应该使用pown
功能:
System.Math.Sqrt(pown x 2 + pown y 2)
您可以将其缩短为:
sqrt(pown x 2 + pown y 2)
有一个运算符**
可用,但这是浮点数,因此您必须将代码更改为:
sqrt (x ** 2.0 + y ** 2.0)
但我会改用pown
。