Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/fsharp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Function F#定义函数输入类型/防止类型不匹配_Function_F#_Type Mismatch - Fatal编程技术网

Function 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

我应该首先说我对F#是新手,这无疑是一个新手问题

我已经做了两个月的F#,我总的来说觉得F#令人沮丧的一件事是contant的错误。“此处应具有某种类型,但被赋予了某种类型。”

我记得我的老师说过,与其他语言不同,F#无法自己理解你指的是什么类型

所以我想问你们的问题是,如何定义函数输入的类型

例如:

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.
。因此,如果我得到一个类型不匹配,则可能是其中一个运算符没有执行我认为它正在执行的操作?是的,通过使用一个与特定类型一起工作的运算符,在本例中为字符串,类型推断使用此信息来派生函数的类型。因此,如果我得到的类型不匹配,则可能是其中一个运算符没有执行我认为它正在执行的操作?是的,通过使用与特定类型一起工作的运算符,在本例中为字符串,类型推断使用此信息派生函数的类型。