On branch main

modified:   src/ch01.md
modified:   src/ch08.md
This commit is contained in:
zed
2023-11-24 16:49:24 +03:00
parent 25aeaa4212
commit 7118e638dc
2 changed files with 10 additions and 9 deletions

View File

@@ -99,10 +99,10 @@ const MAX_POWER = user.MAX_POWER;
Скорее всего, на данный момент у вас больше вопросов, чем ответов. Что
такое `user` в приведенном отрывке? Хотя мы ещё не знакомы с ключевым
словом `var`, но тем не менее можно спросить, а что, если вместо `const`
использовать `var`? Или. возможно, у вас возник вопрос по поводу
использовать `var`? Или, возможно, у вас возник вопрос по поводу
использования сторонних библиотек. Это всё хорошие вопросы, но чтобы
ответить на них, нам нужно глубже изучить Zig, а пока нам придётся
обойтись тем, что мы уже знаем, а именно:
обойтись тем, что мы уже знаем, а именно:
* как импортировать стандартную библиотеку (`const std = @import("std");`)
* как импортировать свои собственные файлы (`const user = @import(models/user.zig)`)

View File

@@ -11,7 +11,7 @@
не менее, сам по себе язык вполне пригоден для достижения аналогичных
целей.
## Простой интерфейс и его реализация
## Простой интерфейс и пример его реализации
Мы сейчас сконструируем некий интерфейс, который будет называться
`Writer`. Он будет достаточно прост для понимания сути дела и будет
@@ -30,13 +30,14 @@ const Writer = struct {
```
Это вполне себе законченный интерфейс. Это структура, в которой два поля,
`ptr` (это указатель на *нечто*, что этот интерфейс реализует,
а про `*anyopaque` мы вскоре поговорим) и `writeAllFn`, это
указатель на функцию, которая реализует данный метод.
`ptr` (это указатель на *нечто*, что этот интерфейс реализует, а про
`*anyopaque` мы вскоре поговорим) и `writeAllFn`, это указатель на
функцию, которая реализует данный метод.
Заметим, что функция `writeAll`, входящая в состав нашей структуры-интерфейса,
просто вызывает реализацию по указателю `writeAllFn`, передавая ей,
наряду с другими параметрами, указатель `ptr`.
Заметим, что функция `writeAll`, входящая в состав нашей
структуры-интерфейса, просто вызывает реализацию по указателю
`writeAllFn`, передавая ей, наряду с другими параметрами, указатель
`ptr`.
Теперь скелет того самого нечто, что реализует данный интерфейс: