Входные параметры: 1. Цель/задача кода: [Цель] 2. Основные операции или вызовы API: [Операции] 3. Требования к параллелизму/конкурентности: [Параллелизм] 4. Требования к обработке ошибок: [Ошибки] 5. Желаемая структура или выходные данные: [Выходные данные] Ты эксперт по Kotlin и асинхронному программированию. Создай код корутин Kotlin для цели: [Цель]. Процесс: 1. Анализ: Определи, какие операции являются долгими (I/O, сетевые вызовы, вычисления) и должны быть асинхронными. Основные операции: [Операции]. 2. Выбор подходов: Используй корутины Kotlin (async/await, coroutineScope, withContext). Учти требования к параллелизму: [Параллелизм] (например, параллельное или последовательное выполнение операций). 3. Структура: Напиши функцию, инкапсулирующую логику. Используй подходящий диспетчер (Dispatchers.IO для I/O, Dispatchers.Default для вычислений). Для параллельного выполнения используй `coroutineScope` и `async` для запуска задач. Для последовательного использования `await()` на предыдущей задачи перед запуском следующей. 4. Обработка ошибок: Реализуй обработку ошибок в соответствии с требованиями: [Ошибки] (например, возврат null, проброс исключения, использование Result-класса). Используй блоки try-catch для обработки исключений внутри корутин или пробрасывай их выше. 5. Результат: Верни данные в структуре, соответствующей требованиям: [Выходные данные]. Критерии успеха: - Код компилируется и работает без блокировок. - Эффективно используются корутины для указанной цели. - Реализована указанная обработка ошибок. - Соблюдены требования к параллельному/последовательному выполнению. - Код читаем и следует best practices Kotlin. Предупреждения: - Избегай использования `runBlocking` в продакшен-коде, только для тестов или точки входа. - Не забывай отменять корутины в случае необходимости через CoroutineScope. - Для зависимых асинхронных операций, которые должны выполняться последовательно, используй `await()` внутри `coroutineScope` или последовательные вызовы suspend-функций. - Правильно выбирай диспетчеры (Dispatchers) для разных типов операций.
×
Асинхронный код на Kotlin
Промпт для генерации асинхронного кода на Kotlin с использованием корутин. Запрос структурирован по входным параметрам: цель, операции, параллелизм, ошибки, выходные данные. Инструкция детализирует этапы анализа, выбора подхода, структуры кода, обработки ошибок и вывода результата, включает критерии успеха и предупреждения о типичных ошибках для написания эффективного и корректного кода.
Категория:
Написание кода
Промпт на русском языке:
Промпт на английском языке:
Input parameters: 1. Code goal/task: [Goal] 2. Main operations or API calls: [Operations] 3. Concurrency/parallelism requirements: [Concurrency] 4. Error handling requirements: [Errors] 5. Desired output structure or data: [Output] You are an expert in Kotlin and asynchronous programming. Create Kotlin coroutines code for the goal: [Goal]. Process: 1. Analysis: Identify which operations are long-running (I/O, network calls, computations) and should be asynchronous. Main operations: [Operations]. 2. Approach selection: Use Kotlin coroutines (async/await, coroutineScope, withContext). Consider concurrency requirements: [Concurrency] (e.g., parallel or sequential execution of operations). 3. Structure: Write a function encapsulating the logic. Use appropriate dispatchers (Dispatchers.IO for I/O, Dispatchers.Default for computations). For parallel execution, use `coroutineScope` and `async` to launch tasks. For sequential execution, use `await()` on the previous task before starting the next one. 4. Error Handling: Implement error handling according to the requirements: [Errors] (e.g., return null, throw exception, use Result class). Use try-catch blocks to handle exceptions inside coroutines or rethrow them. 5. Result: Return data in a structure that meets the requirements: [Output]. Success Criteria: - The code compiles and runs without blocking. - Coroutines are used efficiently for the stated goal. - The specified error handling is implemented. - Requirements for parallel/sequential execution are met. - The code is readable and follows Kotlin best practices. Warnings: - Avoid using `runBlocking` in production code, only for tests or the entry point. - Remember to cancel coroutines if necessary via CoroutineScope. - For dependent async operations that must run sequentially, use `await()` inside `coroutineScope` or sequential calls to suspend functions. - Choose the correct dispatchers (Dispatchers) for different types of operations.