On branch main

modified:   src/ch09.md
This commit is contained in:
zed
2023-11-21 14:27:16 +03:00
parent 2e5578a08e
commit f3f55e5be8

View File

@@ -79,11 +79,11 @@ Goku's power is: -1431655766
представить себе код, вызывающий `remove` без знания того,
что ссылка на элемент есть где-то ещё.
Помимо ошибочного вызова `remove` мы можем починить наш пример
и другими способами. Первый способ это использовать метод `get`
вместо `getPtr`. Этот метод возвращает копию `User`, а не указатель
на экземпляр, который находится в самой таблице. И тогда у нас
будет **три** экземпляра `User`:
Помимо удаления ошибочного вызова `remove` мы можем починить наш пример и
другими способами. Первый способ это использовать метод `get` вместо
`getPtr`. Этот метод возвращает копию `User`, а не указатель на
экземпляр, который находится в самой таблице. И тогда у нас будет
**три** экземпляра `User`:
* исходный `goku`, созданный в `main`
* его копия в `lookup`, которая и владеет этой копией
@@ -399,14 +399,14 @@ Zig нет свойств (это такие поля структуры/кла
выглядит как обращение к полю, это действительно обращение к полю и,
соответственно, если что-то не выглядит как вызов функции, то это не
вызов функции. С другой стороны, отсутствие приватных полей, возможно,
ошибка дизайна Zig, но мы можем как-то нивелировать, например, используя
символ `_` в качестве первого символа имен тех полей, которые
ошибка дизайна Zig, но мы можем это как-то нивелировать, например,
используя символ `_` в качестве первого символа имен тех полей, которые
предназначены только для внутреннего использования.
Поскольку строки имеют тип `[]8` или `[]const u8`, список из байтов (то
есть `ArrayList(u8)`) это подходящий тип для построения конструктора
строк по типу `StringBuilder` в .NET или `strings.Builder` в Go.
Фактически, вы будете часто использовать в случаях, когда функция
Фактически, вы будете часто такое использовать в случаях, когда функция
принимает `Writer` и вам на выходе нужна строка. Ранее мы видели пример,
в котором для вывода документа JSON на стандартный вывод использовалась
`std.json.stringify`. Вот пример использования `ArrayList(u8)` для вывода