On branch main

modified:   src/ch01.md
new file:   src/ex-ch01-02.zig
This commit is contained in:
zed
2023-11-09 18:56:32 +03:00
parent 2dd5185d36
commit 0ca97bdbc4
2 changed files with 55 additions and 1 deletions

View File

@@ -103,6 +103,7 @@ const MAX_POWER = user.MAX_POWER;
## Комментарии
Следующая строчка в примере это комментарий:
```
// Если тут убрать слово 'pub', то этот код не откомпилируется
```
@@ -116,7 +117,7 @@ const MAX_POWER = user.MAX_POWER;
## Функции
После комментария в нащем примере идёт строчка
После комментария в нашем примере идёт строчка
```zig
pub fn main() void {
@@ -131,3 +132,45 @@ pub fn main() void {
```
/opt/zig-0.11/lib/std/start.zig:559:45: error: root struct of file 'ex-ch01-01' has no member named 'main'
```
Если не принимать во внимание особую роль функции `main` как точки входа,
то в остальном это обычная функция, то есть она может принимать параметры
и возвращать какое-то значение. В данном случае наша `main` ничего
не принимает (что обозначено отсутствием чего бы то ни было внутри круглых
скобок) и ничего не возвращает, что обозначено ключевым словом `void`.
Следующий пример будет чуть-чуть более интересен:
```zig
const std = @import("std");
pub fn main() void {
const sum = add(8999, 2);
std.debug.print("8999 + 2 = {d}\n", .{sum});
}
fn add(a: i64, b: i64) i64 {
return a + b;
}
```
Программисты, пишущие на языках C или C++ наверняка заметят, что Zig
не требует объявления/определения функции до её использования, функция
`add` вызывается раньше (по тексту), чем встречается её определение.
Далее отметит тип `i64`. Вот некоторые другие целочисленные/вещественные типы:
`u8`, `i8`, `u16`, `i16`, `u32`, `i32`, `u47`, `i47`, `u64`, `i64`, `f32` and `f64`.
Наличие в списке `u47` и `i47` это вовсе не проверка того, что Вы ещё не спите -
Zig умеет работать с целыми числами произвольного размера (в битах). Возможно,
ВЫ не будете использовать такие типы (`u1`, `s9` и т.п.), однако, иногда
они удобны или даже необходимы. Тип, который Вы точно будете часто использовать,
это `usize` - это целочисленный тип размером с указатель (для данной платформы) и
это тип представляет длину/размер чего-либо.
Давайте

11
src/ex-ch01-02.zig Normal file
View File

@@ -0,0 +1,11 @@
const std = @import("std");
pub fn main() void {
const sum = add(8999, 2);
std.debug.print("8999 + 2 = {d}\n", .{sum});
}
fn add(a: i64, b: i64) i64 {
return a + b;
}