let a = ref 0
let f (x: byref<int>) = x
f a // type error
System.Int32.TryParse("123",a) // works
f a
是因爲a
可以傳遞到.NET庫方法與byref<int>
類型的類型錯誤令人費解給我。爲什麼?爲什麼傳遞一個ref類型到一個F#函數中,期望得到一個byref類型錯誤?
編輯:我想我真的很不好地解釋這個問題。 System.Int32.TryParse
的類型是string * byref<int> -> bool
,但它的工作原理。那麼爲什麼我不能將a
轉換成x:byref<int> -> int
類型的函數呢?這就是我所要求的。
什麼是確切的錯誤? – TheQuickBrownFox
可能是https://stackoverflow.com/questions/5028377/understanding-byref-ref-and – rmunn
錯誤FS0001的副本:預計此表達式的類型爲'byref',但這裏的類型爲'int ref' –