On branch main

modified:   src/ch08.md
This commit is contained in:
zed
2023-11-24 12:00:26 +03:00
parent 228b2ac19f
commit f565355fdf

View File

@@ -5,7 +5,7 @@
до того момента, когда вы осознаете, что в нём нет никакого специального
синтаксиса для создания интерфейсов (таких, как в Java или Go). Но,
вероятно, вы заметите некоторые вещи, которые номинально не являются
таковыми, но очень на них похожи, например, `std.mem.Allocator`. Это
интерфейсами, но очень на них похожи, например, `std.mem.Allocator`. Это
потому, что в Zig действительно нет простого механизма для создания
интерфейсов (например, ключевых слов `interface` и `implements`), но, тем
не менее, сам по себе язык вполне пригоден для достижения аналогичных
@@ -192,7 +192,7 @@ const File = struct {
разделе схема не сработает.
Иными словами, мы хотим, чтобы `File.writeAll` был нормальным методом,
без необходимости манипуляций с обобщёнными указателями, как то вот так:
без необходимости манипуляций с обобщёнными указателями, как-то вот так:
```zig
fn writeAll(self: *File, data: []const u8) !void {
@@ -350,10 +350,10 @@ ptr_info.Pointer.child.writeAll(self, data);
вызов функции в буквальном смысле, а встроить тело функции в точку вызова.
Будем надеяться, что эта глава прояснила детали конструирования
интерфейсов в Zig, а также, возможно, обрисовала такие возможности
языка, которые не были никак затронуты в предыдущих главах.
Однако, для простых случаев, когда все реализации заведомо известны,
можно применять другой подход, о чём мы поговорим в следующем разделе.
интерфейсов в Zig, а также, возможно, обрисовала такие возможности языка,
которые никак не были затронуты в предыдущих главах. Однако, для простых
случаев, когда все реализации заведомо известны, можно применять другой
подход, о чём мы и поговорим в следующем разделе.
## Использование маркированных объединений