我正在尝试创建一个函数,它可以接受整数和浮点数作为参数。问题在于,尽管使用了关键字inline,但编译器仍然会自动推断出函数中的类型,因为其中包含数字。以下是我的意思:
(* Infers ints for every parameter because of '1' *)
let inline Lerp a b t = (1 - t) * a + t * b
(* Infers floats for every parameter because I added '.0' to '1' *)
let inline Lerp' a b t = (1.0 - t) * a + t * b
我可以创建两个单独的函数,但这有些令人失望。有没有其他方法?
let two = GenericOne + GenericOne
。为了系统化,你甚至可以使用Peano算术创建其他数字,通过将加法定义为重复继承,然后定义乘法为重复加法等。 - Brian Bernsa
和b
将是整数,而t
将是浮点数,但这并没有在我的问题中明确说明,这就是为什么我仍然将答案标记为解决方案的原因。最终我只是创建了一个额外的函数,将前两个值转换为浮点数。如果您能找到更好的解决方案,那将不胜感激。 - tigerros