F#中的内联关键字问题
Trouble with inline keyword in F#
我正在尝试创建一个可以将整数和浮点数作为参数的函数。问题在于尽管使用了 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
我可以创建两个单独的函数,但有点令人失望。有解决办法吗?
您需要 LanguagePrimitives.GenericOne
,对于任何原始数字类型或任何具有名为 'One':
的静态成员的类型,它解析为值 'one'
let inline Lerp a b t =
(LanguagePrimitives.GenericOne - t) * a + t * b
Lerp 1 2 3 |> printfn "%A" // 4
Lerp 1.1 2.2 3.3 |> printfn "%A" // 4.73
我正在尝试创建一个可以将整数和浮点数作为参数的函数。问题在于尽管使用了 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
我可以创建两个单独的函数,但有点令人失望。有解决办法吗?
您需要 LanguagePrimitives.GenericOne
,对于任何原始数字类型或任何具有名为 'One':
let inline Lerp a b t =
(LanguagePrimitives.GenericOne - t) * a + t * b
Lerp 1 2 3 |> printfn "%A" // 4
Lerp 1.1 2.2 3.3 |> printfn "%A" // 4.73