Инициализация C#-структуры из F#?
Вопрос
У меня есть простая структура C#, которую я хочу использовать из F#:
public struct Stat : IEquatable<Stat>
{
public ulong st_dev;
public long st_blocks;
}
Способ, который я нашел, чтобы сделать это, кажется мне слишком C#-иш и изменчивым:
stbuf <- new Stat()
stbuf.st_blocks <- 0
stbuf.st_dev <- 1
Не говоря уже о том, что в C# я мог бы использовать хороший new Stat { st_blocks = 0, st_dev = 1 }
синтаксический сахар...
Теперь, когда я перехожу на F#, у меня начинается аллергия на оператор присваивания <-
, итак, есть ли какой-нибудь способ улучшить это?
Решение
В конструкторе есть синтаксис для установки свойств или изменяемых полей:
stbuf <- Stat(st_blocks = 0L, st_dev = 1UL)
Обратите внимание, что вам не нужен new
в F#, за исключением того, что это обычно рекомендуется на IDisposable
вещи.Также обратите внимание на суффиксы, необходимые для указания литералов соответствующих типов.
Не связан с StackOverflow