Я хотел бы определить типМожно ли определить единицы измерения для kB, GB, ... с явным или неявным преобразованием?
[<Measure>] type kB
мера, которая преобразуется в число байтов, когда явно приводится к междунар:
(int)7<kB> // would result 1024kB - explicit would be fine
Поскольку нет никакого способа, чтобы добавить явное преобразование оператора к типу, как в C#, я застрял. У кого-то есть идея? Еще лучше было бы неявное преобразование, так что, когда функция требует количества байт, это можно назвать как
Allocate(7<kB>) // implicit would be superfine
Специальных функции преобразования не обращается - написание функции кБ тривиально, но не так хорошо, :
let kB(n) = 1024 * n
kB(7)
7 |> kB
функция преобразования, которая делает то же самое с блоками не круто либо
7<kB> |> convertToByte
Возможно, вы соответствуете этой опции? https://dotnetfiddle.net/KgaqqL –
Я * думаю * (но я не уверен), что это невозможно, и кажется, что этот вопрос близко по духу к [этому] (http://stackoverflow.com/q/ 21862335/1180426). Там есть хак, который может помочь вам, но в целом нет подходящего подхода. Кроме того, [здесь ссылка из ответа] (http://trelford.com/blog/post/Units-of-measure-auto-conversion.aspx) с другим подходом, но это не без затрат по сравнению с обнаженными единицами измерения. –
@ PatrykĆwiek thx много, да все это там. – citykid