4365a50cda
с афроо лошадьми
4.6 KiB
4.6 KiB
📚 Система библиотек FoxLang
Как работает include
FoxLang поддерживает подключение внешних файлов через include("filename.fox"). Система работает следующим образом:
Поиск файлов
- Относительный путь: Сначала ищет файл относительно текущего .fox файла
- Абсолютный путь: Если не найден, ищет рядом с исполняемым файлом
Структура проекта
project/
├── main.fox # Основной скрипт
├── libs/ # Папка с библиотеками
│ ├── net.fox # Сетевые функции
│ ├── utils.fox # Утилиты
│ └── math.fox # Математические функции
└── foxlang # Исполняемый файл
Подключение библиотек
// В main.fox
include("libs/net.fox"); // Относительно main.fox
include("libs/utils.fox");
// Теперь доступны функции из библиотек
string ip = get_public_ip();
int result = max(10, 20);
🌐 Библиотека net.fox
Что изменилось
Раньше: net.fox был просто заглушкой с комментариями Сейчас: Полноценная библиотека с удобными функциями высокого уровня
Основные функции
HTTP клиент
// Простой GET с обработкой ошибок
string response = get("https://api.example.com");
// POST с JSON данными
string result = post_json("https://api.example.com/data", "{\"key\":\"value\"}");
// Получение публичного IP
string ip = get_public_ip();
TCP клиент
// Проверка доступности сервера
bool available = ping("google.com", 80);
// Отправка сообщения с автоматическим управлением соединением
string response = send_message("localhost", 8080, "Hello Server!");
Утилиты
// Проверка интернет-соединения
if (is_online()) {
print("Internet is available");
}
Преимущества новой библиотеки
- Автоматическая обработка ошибок: Не нужно проверять каждый вызов
- Упрощенный API: Одна функция вместо нескольких низкоуровневых
- Готовые решения: ping, проверка интернета, получение IP
- Безопасность: Автоматическое закрытие соединений
🛠 Библиотека utils.fox
Математические функции
int maximum = max(15, 23);
int minimum = min(15, 23);
Работа со строками
string repeated = repeat("Fox", 3); // "FoxFoxFox"
bool starts = starts_with("FoxLang", "Fox"); // true
Утилиты для массивов
array numbers 5;
// ... заполнение массива ...
print_array(numbers, 5); // Вывод содержимого
bubble_sort(numbers, 5); // Сортировка
📝 Пример использования
// main.fox
include("libs/net.fox");
include("libs/utils.fox");
print("=== FoxLang Project Demo ===");
// Сетевые функции
if (is_online()) {
string ip = get_public_ip();
print("Your IP: " + ip);
}
// Математика
int result = max(42, 17);
print("Maximum: " + result);
// Массивы
array data 3;
set(data, 0, 100);
set(data, 1, 50);
set(data, 2, 75);
print("Before sorting:");
print_array(data, 3);
bubble_sort(data, 3);
print("After sorting:");
print_array(data, 3);
🚀 Запуск
# Компиляция
cd src
g++ main.cpp Lexer.cpp Parser.cpp -o foxlang
# Запуск проекта с библиотеками
./foxlang ../test/example_with_libs.fox
💡 Создание собственных библиотек
- Создайте файл в папке
libs/ - Определите функции
- Подключите через
include("libs/your_lib.fox") - Используйте функции в основном коде
Система автоматически найдет файл относительно вашего скрипта!