有一個通用的功能LanguagePrimitives.DivideByInt
通過int
不失一般性的行爲來劃分,我們可以用這樣的:是否有通用的MultiplyByInt?
let inline Divideby2 n = LanguagePrimitives.DivideByInt n 2
val inline Divideby2 :
^a -> ^a when ^a : (static member DivideByInt : ^a * int -> ^a)
但是沒有叫MultiplyByInt
通過int
執行通用乘法函數。有什麼可以執行泛型乘法嗎?就像這樣:
let inline MultiplyBy2 n = SomeGenericFunctionsModule.MultiplybyInt n 2;
附:我們總是可以使用一些不規範的做法,如:
let inline MultiplyByInt n m = seq { for i in 1..m -> n} |> Seq.sum
,但我很感興趣,如果有可能以正確的方式去做。
該庫爲'DivideByInt'函數作弊,並使用未記錄的表達式,如果您嘗試使用它們,將會產生警告。提出一個比你的建議更聰明的解決方案是棘手的。 – 2012-03-02 03:56:02
@Dmitry你有沒有試過我的答案?它不需要迭代,所以它肯定會快得多。 – Gustavo 2012-03-08 06:48:37
是的,它工作,謝謝!但是我已經決定這個操作(乘以int)是奇怪的,這不是自然的,而是由設計引起的混亂。實際上,我試圖得到的是當我們只有'GenericOne'和'GenericZero'時獲得一些泛型類型的常量。所以我一直對int不是乘以某些東西感興趣,而是通過用int值乘以'LanguagePrimitives.GenericOne'獲得泛型類型的常量。 – 2012-03-08 09:28:16