Вопрос

У меня есть простая структура 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 вещи.Также обратите внимание на суффиксы, необходимые для указания литералов соответствующих типов.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top