2015-12-21 53 views

回答

2

在編寫float32 a時,您正在使用函數Microsoft.FSharp.Core.Operators.float32,該函數將顯式轉換爲單位爲單精度浮點數。

如果你想允許的floatType類似的使用,你可以添加以下到您的定義:

let inline floatType a = float32 a 

現在您的代碼應工作。

+0

其實在這種情況下,你是**掩碼**類型縮寫'floatType'與函數類型'floatType'的新定義,返回'float32' – Petr

+0

@Petr它沒有比float32更掩蓋,是嗎?類型註釋仍然有效,因爲編譯器將用途區分爲類型。有兩種定義後,'float32'可以工作,但'floatType'不會? – Vandroiy

+0

是的,你是對的。我的錯 – Petr

4

是的,可以使用類型別名進行投射,但不是投射,這不是投射的語法。在你的例子中,你使用的是explicit conversion

鑄造是不同的東西,它「轉換」,以超一流(上鑄造)或子類(下鑄造),看看你的示例的這一修改:

type floatType = float32 
let a = box 5.0f 
let b = a :?> float32 
let b' = a :?> floatType 

這示例是向下轉換,正如您可以看到它與別名一起使用。

所以無法投射從floatfloat32,即使沒有類型註釋。

相關問題