404 lines
14 KiB
Markdown
404 lines
14 KiB
Markdown
# π ΠΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ 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);
|
||
}
|
||
}
|
||
}
|
||
}
|
||
```
|
||
|
||
---
|