gpt4 book ai didi

types - F# 错误 : Wrong type expected?

转载 作者:行者123 更新时间:2023-12-04 11:21:37 26 4
gpt4 key购买 nike

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

上面的函数遍历一个浮点对列表。每一对就像笛卡尔平面上的一个坐标。该函数找到最接近原点的一对。底部的 for 循环会产生类型错误。

"This expression was expected to have type float * float but here has type unit"



我将如何修复此错误?

最佳答案

if阻止您返回 float * float元组,但在 else阻止你正在改变 closest变量和返回 unit .这两个块必须返回相同的类型。

更改您的 else阻止这个:

else
closest <- pairs.[0]
for i in pairs do
if (distance i) < (distance closest) then closest <- i
closest

这确保您返回 closest 的最终结果。 else 中的变量阻止,这将反过来确保您返回 float * float if 中的元组和 else路径。

关于types - F# 错误 : Wrong type expected?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35473140/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com