F# 定义函数输入类型/防止类型不匹配
F# Define Function input type/ Prevent type missmatches
我可能应该先说我是 F# 的新手,这无疑是一个菜鸟问题。
我已经使用 F# 大约两个月了,我通常对 F# 感到沮丧的一件事是不断出现的错误。 "Here was expected to have type something but was given type something else."
我记得我的老师说过,与其他语言不同,F# 无法自行判断您指的是什么类型。
所以我的问题是你们如何定义函数输入的类型?
示例:
let FoneTwo y x =
System.Math.Sqrt(x^2+y^2)
printfn "%A" (FoneTwo 2.2 3.3)
此错误提示应为浮点数但类型为字符串。这个字符串到底是从哪里来的?在函数调用中,我清楚地使用了浮点数。所以我想我需要以某种方式指定 y 和 x 是一个浮点数,但是如何指定呢?
总的来说,我不仅是在回答了这个例子之后,还有跟踪这个问题的一般规则或方法?因为通常这种情况经常发生。
谁能赐教一下?
请注意运算符 ^
不是幂,它是字符串连接(为了 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
代替。
我可能应该先说我是 F# 的新手,这无疑是一个菜鸟问题。
我已经使用 F# 大约两个月了,我通常对 F# 感到沮丧的一件事是不断出现的错误。 "Here was expected to have type something but was given type something else."
我记得我的老师说过,与其他语言不同,F# 无法自行判断您指的是什么类型。
所以我的问题是你们如何定义函数输入的类型?
示例:
let FoneTwo y x =
System.Math.Sqrt(x^2+y^2)
printfn "%A" (FoneTwo 2.2 3.3)
此错误提示应为浮点数但类型为字符串。这个字符串到底是从哪里来的?在函数调用中,我清楚地使用了浮点数。所以我想我需要以某种方式指定 y 和 x 是一个浮点数,但是如何指定呢?
总的来说,我不仅是在回答了这个例子之后,还有跟踪这个问题的一般规则或方法?因为通常这种情况经常发生。
谁能赐教一下?
请注意运算符 ^
不是幂,它是字符串连接(为了 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
代替。