F # int64 для int - PullRequest
       32

F # int64 для int

9 голосов
/ 25 октября 2008

Как я могу преобразовать Int64 в Int32 тип в F # без использования Microsoft.FSharp.Compatibility.Int32.of_int64?

Я делаю это, потому что кажется, что интерактив не работает, когда я пытаюсь:

open Microsoft.FSharp.Compatibility

С добавлением FSharp.PowerPack в качестве ссылки:

ошибка FS0039: пространство имен 'Совместимость' не определено.

Редактировать: У кого-нибудь есть ответ на вопрос? Предложения о типах int полезны и информативны, но у меня та же проблема с открытием пространства имен powerpack в F # интерактив.

Ответы [ 3 ]

19 голосов
/ 25 октября 2008

F # 1.9.6 имеет функцию преобразования типов, поэтому вы можете сделать это:

let num = 1000
let num64 = int64(num)
10 голосов
/ 25 октября 2008

Обратите внимание, что при преобразовании этого типа при уменьшении размера значения самые значимые байты выбрасываются, поэтому ваши данные могут быть усечены:

> let bignum =  4294967297L;;
val bignum : int64

> let myint = int32(bignum);;
val myint : int32

> myint;;
val it : int32 = 1
1 голос
/ 25 октября 2008

Обратите внимание, что функции для преобразования в каждый целочисленный тип имеют те же имена, что и сами типы, и определены в спецификации библиотеки (см. Ниже). (С выпуском CTP (1.9.6.2) многие библиотеки и пространства имен немного изменились по сравнению с предыдущими выпусками, но, вероятно, будут более «стабильными» в будущем.)

http://research.microsoft.com/fsharp/manual/FSharp.Core/Microsoft.FSharp.Core.Operators.html

...