gpt4 book ai didi

f# - 为什么不能使用不同类型的参数两次使用相同的函数?

转载 作者:行者123 更新时间:2023-12-01 07:40:06 25 4
gpt4 key购买 nike

我今天玩了一点 F#,写了这个:

let sq x = x * x

let i = sq 3
let d = sq 3.0

如果我删除第三行或第四行,它会编译,但如果两者都存在,则不会编译。

我收到错误 This expression should have type 'int', but has type 'float' .

最佳答案

类型推断有效,因此您的函数 sq有类型 int -> int ,因为编译器第一次看到你使用那个函数,你传递给它一个整数。所以它假设 sq是一个接受整数的函数,根据函数的定义 ( x * x ) 它还返回一个整数。

在 F# 中定义一个完全通用的算术函数有点复杂,但一种方法是使函数 inline ,像这样:

let inline sq x = x * x

这样你的函数体每次都会在调用站点被内联,所以使用内联 sq function 将与每次使用时替换它的 body 相同。

这种方法有它的缺点,我认为你看到 this question 会很有趣。 .

关于f# - 为什么不能使用不同类型的参数两次使用相同的函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17762670/

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