function
, за яким іде її назва, параметри в круглих дужках і тіло функції в фігурних дужках. Ось приклад:1function greet(name) {
2 console.log("Привіт, " + name + "!");
3}
4
5greet("Аня"); // Виведе: Привіт, Аня!
6
1const greet = (name) => {
2 console.log("Привіт, " + name + "!");
3};
4greet("Богдан"); // Виведе: Привіт, Богдан!
5
1setTimeout(function() {
2 console.log("Цей код виконується через 2 секунди.");
3}, 2000);
4
1function sayHi() {
2 console.log("Привіт!");
3}
4
5function executeFunction(func) {
6 func();
7}
8
9executeFunction(sayHi); // Виведе: Привіт!
10
1function outerFunction() {
2 function innerFunction() {
3 console.log("Я всередині!");
4 }
5 innerFunction(); // Викликаємо внутрішню функцію
6}
7outerFunction(); // Виведе: Я всередині!
8
return
дозволяє функції повертати значення. Якщо ви не вкажете return
, функція поверне undefined
за замовчуванням.1function add(a, b) {
2 return a + b;
3}
4
5const result = add(5, 3);
6console.log(result); // Виведе: 8
7
1function createArray() {
2 return [1, 2, 3];
3}
4
5const arr = createArray();
6console.log(arr); // Виведе: [1, 2, 3]
7
1function multiply(a, b) {
2 return a * b;
3}
4
5console.log(multiply(5)); // Виведе: NaN
6
1function greet(name) {
2 console.log("Привіт, " + name + "!");
3}
4
5greet(); // Виведе: Привіт, undefined!
6
async
. Це дозволяє нам використовувати await
у тілі функції для того, щоб зупинити виконання до отримання результату.Future
, яке представляє результат асинхронної операції. Це означає, що ви можете працювати з обіцянками, які будуть виконані в майбутньому.await
для зупинки виконання.await
await
зупиняє виконання асинхронної функції до тих пір, поки Future
не буде виконано. Це як зупинка дорогоцінного часу у фільмі: ви отримуєте можливість запобігти завантаженню додаткового коду, поки чекаєте на відповіді.1Future<void> fetchData() async {
2 var data = await getDataFromServer(); // Зупиняємо виконання до отримання даних
3 print(data);
4}
5
try-catch
, щоб обробити можливі виключення при виконанні асинхронних операцій:1Future<void> fetchData() async {
2 try {
3 var data = await getDataFromServer();
4 print(data);
5 } catch (e) {
6 print("Сталася помилка: $e");
7 }
8}
9
Future.error
:1Future<String> getDataFromServer() {
2 return Future.error("Не вдалося отримати дані");
3}
4
async/await
1Future<String> fetchData() async {
2 await Future.delayed(Duration(seconds: 2)); // Імітуємо затримку
3 return "Дані отримано!";
4}
5
6void main() async {
7 print("Чекаємо на дані...");
8 String data = await fetchData();
9 print(data); // Виведе: Дані отримано!
10}
11
1import 'dart:convert';
2import 'package:http/http.dart' as http;
3
4Future<void> fetchUserData() async {
5 try {
6 final response = await http.get(Uri.parse("https://api.example.com/user"));
7 if (response.statusCode == 200) {
8 var data = jsonDecode(response.body);
9 print(data);
10 } else {
11 throw Exception("Не вдалося завантажити дані");
12 }
13 } catch (e) {
14 print("Сталася помилка: $e");
15 }
16}
17
await
перед асинхронним викликом:try-catch
.async
, await
, та механізми обробки виключень допомагають створити легкий і зрозумілий код. Тепер ви знаєте, як працювати з асинхронними функціями у Flutter!for
використовується для ітерації через колекції, такі як масиви або словники.while
виконує блок коду доти, поки умова є істинною.while
.while
виглядає так:1var j = 0
2while j < 10 {
3 if j == 5 {
4 break // Зупиняємо цикл, якщо j дорівнює 5
5 }
6 print(j)
7 j += 1
8}
9
break
та continue
, щоб контролювати їх виконання.break
дозволяє вам вийти з циклу достроково.continue
пропускає поточну ітерацію циклу і переходить до наступної.session_start()
.map
в Python — це потужний інструмент для обробки і трансформації даних. З її допомогою можна застосовувати задану функцію до кожного елемента списку чи іншого ітерабельного об'єкта. Просто кажучи, map
допомагає перетворювати дані, не витрачаючи багато коду.map
виглядає так:function
— це функція, яку ви хочете застосувати, а iterable
— список, кортеж або інший ітерабельний об'єкт. Давайте розглянемо простий приклад.1numbers = [1, 2, 3, 4, 5]
2squared = map(lambda x: x ** 2, numbers)
3
4print(list(squared)) # Виведе: [1, 4, 9, 16, 25]
5
map
ідеально працює з анонімними функціями, або lambda
-функціями. Це дозволяє швидко створювати функції без того, щоб формально їх визначати. Давайте подивимося, як це працює:1numbers = [6, 7, 8, 9]
2doubled = map(lambda x: x * 2, numbers)
3
4print(list(doubled)) # Виведе: [12, 14, 16, 18]
5
map
, а коли звичайний цикл for
? Відповідь проста: обидва підходи мають свої переваги.map
часто виглядає більш елегантно у випадках, коли потрібно обробити всі елементи послідовно. Але якщо ваш код стає складним, цикли можуть бути зрозумілішими.map
зазвичай займає менше рядків, але цикл for
може бути легшим для розуміння, якщо потрібно виконати більше дій.map
застосовується в практиці.map
, це дуже просто:1numbers = [1, 2, 3, 4, 5]
2squared = map(lambda x: x ** 2, numbers)
3print(list(squared)) # Виведе: [1, 4, 9, 16, 25]
4
map
для перетворення даних з одного формату в інший. Наприклад, якщо у вас є список рядків чисел, і ви хочете перетворити їх на цілі числа:1string_numbers = ["1", "2", "3"]
2int_numbers = map(int, string_numbers)
3print(list(int_numbers)) # Виведе: [1, 2, 3]
4
map
часто використовується разом з іншими функціями, такими як filter
і reduce
. Це дозволяє створювати складніші обробки даних.filter
, щоб відфільтрувати лише парні числа, а потім застосувати map
, щоб отримати їх квадрати.map
в Python — це потужний інструмент для обробки даних. Вона допомагає зменшити обсяг коду і його складність, при цьому залишаючи код читабельним. Сподіваюся, ця стаття допомогла вам краще зрозуміти, як і коли використовувати map
.lambda
.map
застосовує функцію до кожного елемента, тоді як filter
відбирає тільки ті елементи, які відповідають певній умові.map
для обробки рядків, наприклад, з конкатенацією.map
швидша за цикл for
для великих обсягів даних, оскільки вона оптимізована для масового виклику функцій.map
повинна приймати один аргумент. Якщо потрібно обробити кілька аргументів, то варто використовувати lambda
з map
для комбінування їх.puts
puts
— це, напевно, найпопулярніший спосіб виведення даних у Ruby. Він виводить в консоль текст, а потім переносить курсор на новий рядок.print
print
подібний до puts
, але з маленькою різницею — він не переносить курсор на новий рядок. Уявіть, що ви пишете текст у один рядок:puts
та print
puts
, а коли print
? Використовуйте puts
, якщо хочете вивести дані та перейти на новий рядок. А print
— коли потрібно залишити курсор на місці. Це як вибрати між використанням настройок на фотоапараті: новий режим може дати зовсім інший результат!p
p
— це ще один спосіб виведення. Він не лише виводить дані, але й показує їх у формі, зручною для налагодження. Наприклад, ви можете вивести масив таким чином:sprintf
sprintf
дозволяє вам форматувати рядки. Наприклад, якщо ви хочете вивести число з певною кількістю знаків після коми:puts
і p
. Це дозволить вам швидше налагоджувати та бачити, що відбувається в вашій програмі.puts
, print
та p
, роблять її ще більш зручною. Сподіваюся, що ця стаття допомогла вам зрозуміти, як працювати з виведенням у Ruby!puts
і print
. Відповідь проста: puts
переносить курсор на новий рядок після виведення, тоді як print
робить це без переходу на новий рядок. Це важливо, коли ви хочете контролювати, як виглядатиме ваш вивід.p
, оскільки він показує масив у зрозумілій формі, що особливо корисно для налагодження.{}
. Це не лише зручно, але й допомагає зберегти код чистим і зрозумілим.sprintf
, щоб форматувати числа та рядки так, як вам потрібно, наприклад, обмежувати кількість знаків після коми.puts
, print
і p
— це ті, що ви будете використовувати найчастіше.