Files
FoxLang/DOCUMENTATION.md
T
2026-01-22 20:34:46 +05:00

404 lines
14 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# πŸ“š ДокумСнтация FoxLang v5.0
## ОглавлСниС
1. [ΠžΡΠ½ΠΎΠ²Ρ‹ синтаксиса](#1-основы-синтаксиса)
2. [ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΈ Π’ΠΈΠΏΡ‹](#2-ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅-ΠΈ-Ρ‚ΠΈΠΏΡ‹)
3. [ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ](#3-ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠ΅-Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ)
4. [ΠœΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠ° ΠΈ Π›ΠΎΠ³ΠΈΠΊΠ°](#4-ΠΌΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠ°-ΠΈ-Π»ΠΎΠ³ΠΈΠΊΠ°)
5. [Π£ΠΏΡ€Π°Π²Π»ΡΡŽΡ‰ΠΈΠ΅ конструкции](#5-ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‰ΠΈΠ΅-конструкции)
6. [ΠœΠ°ΡΡΠΈΠ²Ρ‹](#6-массивы)
7. [ΠœΠΎΠ΄ΡƒΠ»ΠΈ ΠΈ Π˜ΠΌΠΏΠΎΡ€Ρ‚](#7-ΠΌΠΎΠ΄ΡƒΠ»ΠΈ-ΠΈ-ΠΈΠΌΠΏΠΎΡ€Ρ‚)
8. [ВстроСнныС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ](#8-встроСнныС-Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ)
9. [Π‘ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΉ синтаксис](#9-соврСмСнный-синтаксис)
---
## 1. ΠžΡΠ½ΠΎΠ²Ρ‹ синтаксиса
FoxLang ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ синтаксис, ΠΏΠΎΡ…ΠΎΠΆΠΈΠΉ Π½Π° C++ ΠΈ Java.
* КаТдая ΠΊΠΎΠΌΠ°Π½Π΄Π° **обязана** Π·Π°ΠΊΠ°Π½Ρ‡ΠΈΠ²Π°Ρ‚ΡŒΡΡ Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ с запятой `;`.
* Π‘Π»ΠΎΠΊΠΈ ΠΊΠΎΠ΄Π° Π²Ρ‹Π΄Π΅Π»ΡΡŽΡ‚ΡΡ Ρ„ΠΈΠ³ΡƒΡ€Π½Ρ‹ΠΌΠΈ скобками `{ ... }`.
* ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‚ΡΡ с `//` ΠΈ ΠΈΠ΄ΡƒΡ‚ Π΄ΠΎ ΠΊΠΎΠ½Ρ†Π° строки.
* ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ΡΡ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹ с подчСркиваниями (`user_name`, `get_data`).
```cpp
// Π­Ρ‚ΠΎ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ
print("Hello"); // Команда
string user_name = "john_doe"; // Π‘ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΉ синтаксис
```
---
## 2. ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΈ Π’ΠΈΠΏΡ‹
Π―Π·Ρ‹ΠΊ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ ΠΏΡΡ‚ΡŒ основных Ρ‚ΠΈΠΏΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ…:
* `int` β€” Π¦Π΅Π»Ρ‹Π΅ числа.
* `float` β€” Π”Ρ€ΠΎΠ±Π½Ρ‹Π΅ числа с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ.
* `string` β€” ВСкст Π² Π΄Π²ΠΎΠΉΠ½Ρ‹Ρ… ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠ°Ρ….
* `bool` β€” ЛогичСский Ρ‚ΠΈΠΏ (`true` ΠΈΠ»ΠΈ `false`).
* `void` β€” Π’ΠΈΠΏ для Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π±Π΅Π· Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΠΎΠ³ΠΎ значСния.
**ОбъявлСниС:**
```cpp
int health = 100;
float gravity = 9.8;
string player_name = "Player1";
bool is_alive = true;
```
**ΠŸΡ€ΠΈΡΠ²Π°ΠΈΠ²Π°Π½ΠΈΠ΅:**
```cpp
health = 90;
gravity = 1.62;
player_name = "Player2";
is_alive = false;
```
---
## 3. ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ
FoxLang ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ ΠΏΠΎΠ»Π½ΠΎΡ†Π΅Π½Π½Ρ‹Π΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ с ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈ ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‚ΠΎΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ.
### ОбъявлСниС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ
```cpp
// Ѐункция с Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΡ‹ΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ
int add(int a, int b) {
return a + b;
}
// Ѐункция Π±Π΅Π· Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΠΎΠ³ΠΎ значСния
void greet(string name) {
print("Hello, " + name + "!");
}
// Ѐункция Π±Π΅Π· ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ²
string get_version() {
return "FoxLang 5.0";
}
```
### Π’Ρ‹Π·ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ
```cpp
int result = add(5, 3);
greet("Alice");
string version = get_version();
print("Version: " + version);
```
### РСкурсивныС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ
```cpp
int factorial(int n) {
if (n <= 1) {
return 1;
}
return n * factorial(n - 1);
}
int fact5 = factorial(5); // 120
```
### Π›ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅
```cpp
int calculate_area(int width, int height) {
int area = width * height; // Π›ΠΎΠΊΠ°Π»ΡŒΠ½Π°Ρ пСрСмСнная
return area;
}
```
> **Π’Π°ΠΆΠ½ΠΎ:** НСльзя ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ с ΠΈΠΌΠ΅Π½Π΅ΠΌ, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΡƒΠΆΠ΅ сущСствуСт Π² Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ области видимости.
> ΠŸΡ€ΠΈ присваивании Π΄Ρ€ΠΎΠ±Π½ΠΎΠ³ΠΎ значСния ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Ρ‚ΠΈΠΏΠ° `int`, ΠΎΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ автоматичСски ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΎ Π² Ρ†Π΅Π»ΠΎΠ΅ (ΠΎΡ‚Π±Ρ€ΠΎΡˆΠ΅Π½Π° дробная Ρ‡Π°ΡΡ‚ΡŒ).
---
## 4. ΠœΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠ° ΠΈ Π›ΠΎΠ³ΠΈΠΊΠ°
ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ΡΡ стандартныС арифмСтичСскиС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ с ΡƒΡ‡Π΅Ρ‚ΠΎΠΌ ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚Π°.
### АрифмСтичСскиС ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹
| ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ | ОписаниС | ΠŸΡ€ΠΈΠΌΠ΅Ρ€ |
| --- | --- | --- |
| `+` | Π‘Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ / ΠšΠΎΠ½ΠΊΠ°Ρ‚Π΅Π½Π°Ρ†ΠΈΡ строк | `5 + 5` ΠΈΠ»ΠΈ `"A" + "B"` |
| `-` | Π’Ρ‹Ρ‡ΠΈΡ‚Π°Π½ΠΈΠ΅ | `10 - 2` |
| `*` | Π£ΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅ | `2 * 2` |
| `/` | Π”Π΅Π»Π΅Π½ΠΈΠ΅ | `10 / 2` |
| `%` | ΠžΡΡ‚Π°Ρ‚ΠΎΠΊ ΠΎΡ‚ дСлСния | `10 % 3` (Π²Π΅Ρ€Π½Π΅Ρ‚ 1) |
| `++` | Π˜Π½ΠΊΡ€Π΅ΠΌΠ΅Π½Ρ‚ (ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½ΠΈΠ΅ Π½Π° 1) | `i++` (Π²Π΅Ρ€Π½Π΅Ρ‚ староС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, Π·Π°Ρ‚Π΅ΠΌ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΡ‚ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ) |
### ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ сравнСния
ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ сравнСния Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‚ `1` (истина) ΠΈΠ»ΠΈ `0` (лоТь).
| ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ | ОписаниС | ΠŸΡ€ΠΈΠΌΠ΅Ρ€ |
| --- | --- | --- |
| `==` | Π Π°Π²Π½ΠΎ | `x == 5` |
| `!=` | НС Ρ€Π°Π²Π½ΠΎ | `x != 5` |
| `<` | МСньшС | `x < 10` |
| `>` | Π‘ΠΎΠ»ΡŒΡˆΠ΅ | `x > 0` |
### ЛогичСскиС ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹
FoxLang ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ логичСскиС ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с boolean значСниями:
| ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ | ОписаниС | ΠŸΡ€ΠΈΠΌΠ΅Ρ€ |
| --- | --- | --- |
| `&&` | ЛогичСскоС И (AND) | `(x > 0) && (x < 10)` |
| `\|\|` | ЛогичСскоС Π˜Π›Π˜ (OR) | `(x == 0) \|\| (x == 1)` |
| `!` | ЛогичСскоС НЕ (NOT) | `!(x == 0)` |
```cpp
bool is_valid = (age >= 18) && (age <= 65);
bool is_weekend = (day == "Saturday") || (day == "Sunday");
bool is_not_empty = !name.empty();
```
---
## 5. Π£ΠΏΡ€Π°Π²Π»ΡΡŽΡ‰ΠΈΠ΅ конструкции
### Условия (If / Else)
```cpp
int x = 10;
if (x == 10) {
print("X is ten");
} else {
print("X is not ten");
}
```
### Π¦ΠΈΠΊΠ»Ρ‹ (While)
ВыполняСт Π±Π»ΠΎΠΊ ΠΊΠΎΠ΄Π°, ΠΏΠΎΠΊΠ° условиС истинно.
```cpp
int i = 0;
while (i < 5) {
print("Loop iteration: " + i);
i++;
}
```
### Π¦ΠΈΠΊΠ»Ρ‹ (For)
ΠšΠ»Π°ΡΡΠΈΡ‡Π΅ΡΠΊΠΈΠΉ Ρ†ΠΈΠΊΠ» `for`, состоящий ΠΈΠ· ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ, условия ΠΈ шага.
```cpp
for (int i = 0; i < 5; i++) {
print("For loop: " + i);
}
```
### Switch/Case конструкции
FoxLang ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ конструкции `switch/case` с ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ `break` ΠΈ `default`:
```cpp
int day = 3;
switch (day) {
case 1:
print("ПонСдСльник");
break;
case 2:
print("Π’Ρ‚ΠΎΡ€Π½ΠΈΠΊ");
break;
case 3:
print("Π‘Ρ€Π΅Π΄Π°");
break;
default:
print("Π”Ρ€ΡƒΠ³ΠΎΠΉ дСнь");
break;
}
```
### Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Ρ†ΠΈΠΊΠ»Π°ΠΌΠΈ
- `break` β€” ΠŸΡ€Π΅Ρ€Ρ‹Π²Π°Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Ρ†ΠΈΠΊΠ»Π° ΠΈΠ»ΠΈ switch
- `continue` β€” ΠŸΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΡ‚ ΠΊ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ Ρ†ΠΈΠΊΠ»Π°
```cpp
for (int i = 0; i < 10; i++) {
if (i == 5) {
continue; // ΠŸΡ€ΠΎΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ 5
}
if (i == 8) {
break; // Π’Ρ‹ΠΉΡ‚ΠΈ ΠΈΠ· Ρ†ΠΈΠΊΠ»Π°
}
print(i);
}
```
### ΠžΠ±Π»Π°ΡΡ‚ΠΈ видимости (Scope)
Π‘Π»ΠΎΠΊΠΈ ΠΊΠΎΠ΄Π° `{ ... }` ΡΠΎΠ·Π΄Π°ΡŽΡ‚ Π½ΠΎΠ²ΡƒΡŽ ΠΎΠ±Π»Π°ΡΡ‚ΡŒ видимости. ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅, ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½Π½Ρ‹Π΅ Π²Π½ΡƒΡ‚Ρ€ΠΈ Π±Π»ΠΎΠΊΠ°, нСдоступны снаруТи.
```cpp
int global = 10;
{
int local = 5;
print(global); // 10
print(local); // 5
}
// print(local); // Ошибка! ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Π°Ρ local Π½Π΅ сущСствуСт здСсь.
```
---
## 6. ΠœΠ°ΡΡΠΈΠ²Ρ‹
ΠœΠ°ΡΡΠΈΠ²Ρ‹ Π² FoxLang ΠΈΠΌΠ΅ΡŽΡ‚ фиксированный Ρ€Π°Π·ΠΌΠ΅Ρ€ ΠΏΡ€ΠΈ создании.
1. **Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅:** `array имя Ρ€Π°Π·ΠΌΠ΅Ρ€;`
2. **Π—Π°ΠΏΠΈΡΡŒ:** `set(имя, индСкс, Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅);`
3. **Π§Ρ‚Π΅Π½ΠΈΠ΅:** `get(имя, индСкс)`
4. **Π Π°Π·ΠΌΠ΅Ρ€:** `size(имя)`
```cpp
array chest 3; // Массив Π½Π° 3 элСмСнта
set(chest, 0, 55); // Π—Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ 55 Π² индСкс 0
print(get(chest, 0)); // Π’Ρ‹Π²Π΅Π΄Π΅Ρ‚ 55
```
---
## 7. ΠœΠΎΠ΄ΡƒΠ»ΠΈ ΠΈ Π˜ΠΌΠΏΠΎΡ€Ρ‚
FoxLang ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ ΠΈΠΌΠΏΠΎΡ€Ρ‚ Π²Π½Π΅ΡˆΠ½ΠΈΡ… ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ.
Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ `include("ΠΏΡƒΡ‚ΡŒ/ΠΊ/Ρ„Π°ΠΉΠ»Ρƒ.fox");`.
**ΠžΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΠΈ:**
* ΠŸΡ€ΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΈ Π²Π½Π΅ΡˆΠ½ΠΈΡ… ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ ΠΊΠΎΠ΄, находящийся Π²Π½Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ ΠΏΡ€ΠΈ ΠΈΠΌΠΏΠΎΡ€Ρ‚Π΅. Π“Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ становятся доступными Π² Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΌ Ρ„Π°ΠΉΠ»Π΅.
---
## 8. ВстроСнныС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ
### Π’Π²ΠΎΠ΄/Π’Ρ‹Π²ΠΎΠ΄
| Ѐункция | ОписаниС | ΠŸΡ€ΠΈΠΌΠ΅Ρ€ |
| --- | --- | --- |
| `print(expr...)` | Π’Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ тСкст ΠΈΠ»ΠΈ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ выраТСния Π² консоль. ΠœΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ нСсколько Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ². | `print("Hello", name);` |
| `input()` | Π–Π΄Π΅Ρ‚ Π²Π²ΠΎΠ΄Π° строки ΠΎΡ‚ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π΅Ρ‘. | `string name = input();` |
| `input(prompt)` | Π’Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ ΠΏΡ€ΠΈΠ³Π»Π°ΡˆΠ΅Π½ΠΈΠ΅ ΠΈ ΠΆΠ΄Π΅Ρ‚ Π²Π²ΠΎΠ΄Π° строки. | `string name = input("Имя: ");` |
### ΠœΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΡ‡Π΅ΡΠΊΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ
| Ѐункция | ОписаниС | ΠŸΡ€ΠΈΠΌΠ΅Ρ€ |
| --- | --- | --- |
| `round(number)` | ΠžΠΊΡ€ΡƒΠ³Π»ΡΠ΅Ρ‚ Π΄Ρ€ΠΎΠ±Π½ΠΎΠ΅ число Π΄ΠΎ блиТайшСго Ρ†Π΅Π»ΠΎΠ³ΠΎ. | `int x = round(3.7); // 4` |
| `random(min, max)` | Π“Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ случайноС число Π² Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅ ΠΎΡ‚ min Π΄ΠΎ max Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ. | `int dice = random(1, 6);` |
### Π Π°Π±ΠΎΡ‚Π° с Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ
| Ѐункция | ОписаниС | ΠŸΡ€ΠΈΠΌΠ΅Ρ€ |
| --- | --- | --- |
| `read_file(filename)` | Π§ΠΈΡ‚Π°Π΅Ρ‚ ΠΏΠ΅Ρ€Π²ΡƒΡŽ Π½Π΅ΠΏΡƒΡΡ‚ΡƒΡŽ строку ΠΈΠ· Ρ„Π°ΠΉΠ»Π° (ΠΈΠ³Π½ΠΎΡ€ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ #). | `string config = read_file("config.txt");` |
### HTTP запросы
| Ѐункция | ОписаниС | ΠŸΡ€ΠΈΠΌΠ΅Ρ€ |
| --- | --- | --- |
| `httpget(url)` | ВыполняСт HTTP GET запрос ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΎΡ‚Π²Π΅Ρ‚ сСрвСра. | `string data = httpget("https://api.example.com");` |
| `httppost(url, data)` | ВыполняСт HTTP POST запрос с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ. | `string response = httppost(url, "{\"key\":\"value\"}");` |
| `httppost(url, data, content_type)` | HTTP POST с ΡƒΠΊΠ°Π·Π°Π½ΠΈΠ΅ΠΌ Ρ‚ΠΈΠΏΠ° ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚Π°. | `httppost(url, data, "application/json");` |
| `httpput(url, data)` | ВыполняСт HTTP PUT запрос с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ. | `string response = httpput(url, data);` |
| `httpput(url, data, content_type)` | HTTP PUT с ΡƒΠΊΠ°Π·Π°Π½ΠΈΠ΅ΠΌ Ρ‚ΠΈΠΏΠ° ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚Π°. | `httpput(url, data, "text/plain");` |
| `httpdelete(url)` | ВыполняСт HTTP DELETE запрос. | `string response = httpdelete(url);` |
### Π Π°Π±ΠΎΡ‚Π° со строками ΠΈ JSON
| Ѐункция | ОписаниС | ΠŸΡ€ΠΈΠΌΠ΅Ρ€ |
| --- | --- | --- |
| `json_get(json_string, key)` | Π˜Π·Π²Π»Π΅ΠΊΠ°Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠΎ ΠΊΠ»ΡŽΡ‡Ρƒ ΠΈΠ· JSON строки. ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ ΠΊΠ»ΡŽΡ‡ΠΈ: "chat_id", "text", "update_id". | `string chat_id = json_get(response, "chat_id");` |
| `str_contains(text, substring)` | ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡΠ΅Ρ‚, содСрТит Π»ΠΈ строка подстроку. Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ `true` ΠΈΠ»ΠΈ `false`. | `bool found = str_contains("Hello World", "World");` |
| `str_to_int(string)` | ΠŸΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ΅Ρ‚ строку Π² Ρ†Π΅Π»ΠΎΠ΅ число. ΠŸΡ€ΠΈ ошибкС Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ 0. | `int num = str_to_int("123");` |
### Π’Π²ΠΎΠ΄ с ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Ρ‹ (Π½ΠΈΠ·ΠΊΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²Ρ‹ΠΉ)
| Ѐункция | ОписаниС | ΠŸΡ€ΠΈΠΌΠ΅Ρ€ |
| --- | --- | --- |
| `getch()` | Π§ΠΈΡ‚Π°Π΅Ρ‚ ΠΎΠ΄ΠΈΠ½ символ с ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Ρ‹ Π±Π΅Π· наТатия Enter. | `string key = getch();` |
| `kbhit()` | ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡΠ΅Ρ‚, Π±Ρ‹Π»Π° Π»ΠΈ Π½Π°ΠΆΠ°Ρ‚Π° клавиша. Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ `true` ΠΈΠ»ΠΈ `false`. | `bool pressed = kbhit();` |
### БистСмныС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ
| Ѐункция | ОписаниС | ΠŸΡ€ΠΈΠΌΠ΅Ρ€ |
| --- | --- | --- |
| `wait(milliseconds)` | ΠŸΡ€ΠΈΠΎΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ΅ количСство миллисСкунд. | `wait(1000); // ΠŸΠ°ΡƒΠ·Π° 1 сСкунда` |
| `fox()` | ΠŸΠ°ΡΡ…Π°Π»ΠΊΠ°: Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ языка "FoxLang". | `fox();` |
---
## 9. Π‘ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΉ синтаксис
FoxLang ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ соврСмСнныС соглашСния ΠΏΠΎ имСнованию ΠΈ синтаксису:
### Π˜Π΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹ с подчСркиваниями
Π’ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ старых вСрсий, FoxLang Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹ с подчСркиваниями:
```cpp
// ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅
string user_name = "john_doe";
int max_health = 100;
bool is_game_over = false;
// Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ
void calculate_damage(int base_damage, float multiplier) {
// ...
}
int get_player_score() {
return player_score;
}
```
### Π“Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅
FoxLang ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ объявлСниС Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹Ρ… ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… с ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹ΠΌ словом `global`:
```cpp
global int game_score = 0;
global string player_name = "Unknown";
void update_score(int points) {
game_score = game_score + points;
}
void main() {
print("Score: " + game_score);
update_score(100);
print("New score: " + game_score);
}
```
### ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ соврСмСнного ΠΊΠΎΠ΄Π°
```cpp
// БоврСмСнная функция с подчСркиваниями
bool check_user_permissions(string user_role, int required_level) {
if (user_role == "admin") {
return true;
}
int user_level = get_user_level(user_role);
return user_level >= required_level;
}
// Π Π°Π±ΠΎΡ‚Π° с массивами
void sort_user_scores(array scores, int count) {
for (int i = 0; i < count - 1; i++) {
for (int j = 0; j < count - i - 1; j++) {
if (get(scores, j) > get(scores, j + 1)) {
int temp = get(scores, j);
set(scores, j, get(scores, j + 1));
set(scores, j + 1, temp);
}
}
}
}
```
---