On branch main

modified:   src/ch01.md
modified:   src/ch08.md
modified:   src/ch09.md
This commit is contained in:
zed
2023-11-19 10:50:08 +03:00
parent d773a99ac5
commit 626cfbed73
3 changed files with 30 additions and 8 deletions

View File

@@ -202,7 +202,7 @@ fn add(a: i64, b: i64) i64 {
```zig
pub const User = struct {
power: u64,
name: []const u8,
name: []const u8,
};
```
@@ -347,11 +347,11 @@ pub fn init(name: []const u8, power: u64) User {
## Массивы и срезы
Мы могли бы обойти молчанием последнюю строчку нашего примера (`name:
[]const u8`), но, поскольку этот пример содержит аж 2 строковые константы
(`"Пётр"` и `"{s} обладает силой {d}\n"`), то наверняка Вы любопытствуете
по поводу строк в Zig. Чтобы лучше понимать строки, нужно сначала
ознакомиться с массивами и срезами.
Мы могли бы обойти молчанием последнюю нашего примера (`name: []const
u8`), но, поскольку пример содержит две строковые константы (`"Пётр"` и
`"{s} обладает силой {d}\n"`), то наверняка Вы любопытствуете по поводу
строк в Zig. Чтобы лучше понимать строки, нужно сначала ознакомиться с
массивами и срезами.
Массивы имеют фиксированный размер, их длина (количество элементов)
известна во время компиляции. Длина является составляющей частью типа, то

View File

@@ -418,5 +418,9 @@ switch (self) {
}
```
Такой оборот `else` автоматически разворачивается,
то есть для каждого варианта получается правильный тип `impl`.
Такой оборот `else` автоматически разворачивается, то есть для каждого
варианта получается правильный тип `impl`. Здесь показана ещё одна вещь -
интерфейсы могут привносить свою логику, в данном примере учитывается
пустая реализация (`.null`). Сколько логики Вы добавляете в сам
интерфейс, это Ваше дело, но по большей части интерфейсы должны в
основном выполнять диспетчеризацию.

View File

@@ -1,3 +1,21 @@
# Программируем на языке Zig
## Снова висячие указатели
## Владение
## `ArrayList`
## `anytype`
## `@typeOf`
## Система сборки
## Сторонние зависимости