Function F#定义函数输入类型/防止类型不匹配
我应该首先说我对F#是新手,这无疑是一个新手问题 我已经做了两个月的F#,我总的来说觉得F#令人沮丧的一件事是contant的错误。“此处应具有某种类型,但被赋予了某种类型。” 我记得我的老师说过,与其他语言不同,F#无法自己理解你指的是什么类型 所以我想问你们的问题是,如何定义函数输入的类型 例如:Function F#定义函数输入类型/防止类型不匹配,function,f#,type-mismatch,Function,F#,Type Mismatch,我应该首先说我对F#是新手,这无疑是一个新手问题 我已经做了两个月的F#,我总的来说觉得F#令人沮丧的一件事是contant的错误。“此处应具有某种类型,但被赋予了某种类型。” 我记得我的老师说过,与其他语言不同,F#无法自己理解你指的是什么类型 所以我想问你们的问题是,如何定义函数输入的类型 例如: let FoneTwo y x = System.Math.Sqrt(x^2+y^2) printfn "%A" (FoneTwo 2.2 3.3) 此错误提示应为浮点,但类型为Strin
let FoneTwo y x =
System.Math.Sqrt(x^2+y^2)
printfn "%A" (FoneTwo 2.2 3.3)
此错误提示应为浮点,但类型为String。这根绳子到底是从哪里来的?在函数调用中,im使用float。所以我想我需要以某种方式指定y和x是一个浮点数,但是如何指定呢
一般来说,我不只是想知道这个例子的答案,而是想知道跟踪这个问题的一般规则或方法?因为一般来说,这种情况经常发生
有人能启发我吗 请注意,运算符
^
不是power,而是字符串连接(为了与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
。注意操作符^
不是power,而是字符串连接(为了与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
。(^)
是一个用于ML兼容性的字符串连接运算符。您想改用(**)
,例如x**2.+y**2.
(^)
是一个用于ML兼容性的字符串连接运算符。您想改用(**)
,例如x**2.+y**2.
。因此,如果我得到一个类型不匹配,则可能是其中一个运算符没有执行我认为它正在执行的操作?是的,通过使用一个与特定类型一起工作的运算符,在本例中为字符串,类型推断使用此信息来派生函数的类型。因此,如果我得到的类型不匹配,则可能是其中一个运算符没有执行我认为它正在执行的操作?是的,通过使用与特定类型一起工作的运算符,在本例中为字符串,类型推断使用此信息派生函数的类型。