Как стать автором
Обновить

Комментарии 7

Очень странное начало статьи без какого-либо вступления о том, что такое Zig.

Согласен!! Хоть бы определение в начале дали, что это за zig такой

«Широко известный в узких кругах» (там, откуда переводчик эту статью притащил)

В этой статье действительно непричём, но комментах к исходной статье много сравнений с растом, видать у переводчика глаз замылился и он добавил «до кучи»

И какой это вообще язык? Это не Rust, и это тем более не C++.

Статья с косяками. И переводчик «переташил» её как есть. Перевод машинный. Имейте это ввиду.

6 — Приватные поля в структурах

Тут стоит сделать ремарку. Приватные поля в структурах возможны. Просто это уже не поля, а обычные переменные или константы. То есть объявляя структуру можно просто добавить что-то типа:

var value: u32 = 0;

и потом эту переменную использовать.

Такой код валидный:

pub const App = struct {
// это внутренняя константа, приватная,
// доступна только внутри самой структуры
        const Self = @This();

// это внутренние константы, они публичные,
// то есть доступны как поля извне
        pub const settings = _settings;
        pub const PlatformX11 = x11.Platform(Self);
        pub const PlatformWayland = wayland.Platform(Self);
        pub const PlatformWindows = windows.Platform(Self);
        pub const PlatformXlib = xlib.Platform(Self);

// это поля структуры, публичны по умолчанию
        type: PlatformType,
        allocator: Allocator,
        window: if (settings.single_window) ?*Window else void,
        windows: if (settings.single_window) void else []*Window,
// ... какой-то еще код, который работает с полями ...
}

Взят из gui библиотеки zwl (https://github.com/Aransentin/ZWL).

Особенность здесь в том, что внутренние переменные и константы должны быть проинициализированы на этапе компиляции, это особенность языка. В то время как поля могут быть не проинициализированы. Это как бы правило языка, но тогда их обязательно нужно инициализировать при создании структуры.

Логика тут на самом деле есть, и она довольна простая. Но почему возник вопрос у автора оригинальной статьи я не совсем понял. Возможно автор оригинальной статьи сравнивает Zig с одним из языков, на которых он писал ранее. И я считаю, что в рамках полей структур это не правильно, потому что Zig в какой-то мере уникален

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории