diff --git a/src/ch01.md b/src/ch01.md index f77a56b..35bb4f3 100644 --- a/src/ch01.md +++ b/src/ch01.md @@ -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` - это целочисленный тип размером с указатель (для данной платформы) и +это тип представляет длину/размер чего-либо. + +Давайте + + + + + + diff --git a/src/ex-ch01-02.zig b/src/ex-ch01-02.zig new file mode 100644 index 0000000..ab0aaaf --- /dev/null +++ b/src/ex-ch01-02.zig @@ -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; +}