Types F#错误:预期的类型错误? 让距离(x:(浮动*浮动)):浮动= sqrt((fst x*fst x)+(snd x*snd x)) 让getClosestPair(成对:(浮点*浮点)列表)= 让可变最近=(0.0,0.0) 如果List.i为空对,则 (无限,无限) 其他的 最接近
在Types F#错误:预期的类型错误? 让距离(x:(浮动*浮动)):浮动= sqrt((fst x*fst x)+(snd x*snd x)) 让getClosestPair(成对:(浮点*浮点)列表)= 让可变最近=(0.0,0.0) 如果List.i为空对,则 (无限,无限) 其他的 最接近,types,casting,f#,Types,Casting,F#,在if块中,您返回的是float*float元组,但在else块中,您正在变异最接近的变量并返回单位。这两个块必须返回相同的类型 将else块更改为: let distance (x:(float * float)): float = sqrt ((fst x * fst x) + (snd x * snd x)) let getClosestPair (pairs:(float * float) list) = let mutable closest = (0.0, 0.0)
if
块中,您返回的是float*float
元组,但在else
块中,您正在变异最接近的变量并返回单位
。这两个块必须返回相同的类型
将else
块更改为:
let distance (x:(float * float)): float =
sqrt ((fst x * fst x) + (snd x * snd x))
let getClosestPair (pairs:(float * float) list) =
let mutable closest = (0.0, 0.0)
if List.isEmpty pairs then
(infinity, infinity)
else
closest <- pairs.[0]
for i in pairs do
if (distance i) < (distance closest) then closest <- i
else
最近的哇。。。我真不敢相信我错过了。非常感谢你!别担心。第二双眼睛永远不会痛。
else
closest <- pairs.[0]
for i in pairs do
if (distance i) < (distance closest) then closest <- i
closest