From f3f55e5be8efca72722ade22e524ae5f2fea498a Mon Sep 17 00:00:00 2001 From: zed Date: Tue, 21 Nov 2023 14:27:16 +0300 Subject: [PATCH] On branch main modified: src/ch09.md --- src/ch09.md | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/src/ch09.md b/src/ch09.md index 9081f71..f7fdbcc 100644 --- a/src/ch09.md +++ b/src/ch09.md @@ -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)` для вывода