let inline set (x: ^t) = BitConverter.ToUInt32(BitConverter.GetBytes(x),0)
我試過類似上面的東西,但它不起作用。輸入約束或運行時解析類型也不行。另外,我猜測答案是否定的,但是有可能告訴編譯器泛型類型只是float32或float嗎?這會節省我很多麻煩。如何打電話給Bitconverter.Getbytes通用?
編輯:
我感到意外的是什麼托馬斯Petricek所寫的作品而反向不會:
let inline toUint32 conv x =
let bytes = conv x
BitConverter.ToUInt32(bytes, 0)
toUint32 BitConverter.GetBytes 9999.99f
toUint32 BitConverter.GetBytes 9999.99
這很有趣。如果沒有其他文章中的conv : BitConvertible
,我也無法使其工作。
你究竟想在這裏做什麼? –
試圖弄清楚如何調用一個更大的函數泛型。雖然我想我已經弄清楚了。我本身並不需要'通用',我只是需要它來接受float32或float。 (a:dMatrix <'t>)(beta:'t)(B:dMatrix <'t>)(C:dMatrix <'t>)='這是行不通的。相反,我剛纔發現我可以做的是鍵入alliasing。 (b:dMatrix)(C:dMatrix)='當然,在dMatrix類中,float類型是浮點型float32,然後是內聯型sgeam2 transa(alpha:floatType)類型都是floatType。 –
@MarkoGrdinic編輯你的問題,而不是在評論中放置代碼。另外,這些評論簽名有哪些與OP的關係? –