Масиви об'єктів (відео версія)
-
0:01 - 0:03Продовжимо досліджувати те, що ми можемо
робити з об'єктами. -
0:04 - 0:08Ми повертаємось до програми яку ми
використовували при вивчені функцій. -
0:08 - 0:14Ця програма з функцією drawWinston, знає
як намалювати Вінстона в певних "x" і "y". -
0:14 - 0:21Тоді тут ми викликаємо drawWinston 4 рази
і кожний має різний набір X та Y координат -
0:22 - 0:28Що ж, ви мене знаєте, коли я поглянула на
ці 4 виклики drawWinston, що дуже подібні, -
0:29 - 0:34все про, що я можу думати, це про те, що
було б краще використати цикл і викликати -
0:34 - 0:39лише один раз всередині циклу, змінюючи
X та Y у кожному повторі циклу. -
0:40 - 0:44Отже, щоб зробити це, нам слід придумати
спосіб зберігання цих X та Y позицій -
0:44 - 0:47у масиві, тому ми зможемо запустити цикл
через масив. -
0:47 - 0:56У нас 2 набори значень і ми можемо зробити
2 масиви. Один для позицій X інший для Y. -
0:56 - 1:09Отже, X координата може мати 99, 294, 101,
і 294. І позиції Y - 117, 117, 316, 316. -
1:09 - 1:13Добре, тепер ми можемо запустити цикл з
нашим циклом for. -
1:13 - 1:18var i = 0; i < xPositions.length; i++
-
1:18 - 1:22Отже, ми проходимо по кожному елементі у
xPositions і введемо -
1:22 - 1:30drawWinston(xPositions[i], yPositions[i]);
-
1:31 - 1:34Гаразд, поглямо чи запрацює, якщо видалити
-
1:34 - 1:36Так, працює
-
1:36 - 1:41І тепер ми можемо викликати ось це, просто
цей рядок коду що виконує drawWinston -
1:41 - 1:45але він обраховується в кожній позиції
xPositions в масиві. -
1:45 - 1:50Отже, ми можемо додати більше до цього
ввівши щось типу... 10, тоді додати 1, -
1:50 - 1:58а потім 1, і тоді 1, і потім ще 100 та 1.
-
1:58 - 2:05Зараз, це виглядає трохи не акуратно і це
мені не подобається? так як мені важко -
2:05 - 2:13побачити які координати X відносяться до Y
Хочу щоб з першого погляду було зрозуміло -
2:13 - 2:14які пари у мене з X.
-
2:15 - 2:19Замість цього, щоб переконатися я
ідеально вирівняю над одним одним -
2:19 - 2:21можливо так
-
2:21 - 2:27Отже, я хочу найти інший спосіб
зберігання цих позицій -
2:27 - 2:31Є одна ідея щоб зберігати їх як об'єкти.
-
2:31 - 2:37Подумайте про це, кожна позиція це два
біти інформації: X та Y. Таким чином, ми -
2:37 - 2:42могли б мати об'єкт, що має властивості Х
та Y, а потім мати масив об'єктів -
2:42 - 2:44з усіма позиціями X та Y.
-
2:44 - 2:46Отже. зробимо це
-
2:46 - 2:51Ми введемо var positions рівне масиву
-
2:51 - 2:56Але кожний елемент замість того,
щоб бути числом буде об'єктом -
2:56 - 3:05Отже, у нас фігурні дужки і тоді введемо
X: 99, Y:117. -
3:06 - 3:13Отже, тепер ми маємо одну з наших позицій
тут, а потім ми додамо ще одну тут. -
3:14 - 3:31Гаразд, X повинна бути 294, 117, третя
буде 101, 316, а остання з них 294 і 316. -
3:31 - 3:38І тепер у нас є масив об'єктів, де кожен
об'єкт має значення Х та Y всередині. -
3:38 - 3:44Отже тут, в нашому циклі for змінимо цю
функцію, щоб повторювати positions.length -
3:44 - 3:49Тоді ми пропустимо об'єкт.
-
3:49 - 3:54Гаразд, зараз він пропускає цілий об'єкт,
але ми хочемо щоб він проходив по X та Y -
3:54 - 3:59отже, нам потрібно positions[i].X та
positions[i].Y. -
3:59 - 4:00Тада!
-
4:00 - 4:04Зараз можемо позбутись цих старих
нагромаджених масивів -
4:05 - 4:10Чудово, і це виглядає набагато приємніше
для мене і код більш читабельний, -
4:10 - 4:13і завжди чим більш читабельний код
тим краще -
4:13 - 4:20Також це спрощує доповнення, якщо хочемо
додати щось. Я додам ще 2 і тоді введемо -
4:20 - 4:25X 200 Y 200, отримаємо маленького Вінстона
по середині, тут. -
4:27 - 4:28Чудово.
-
4:28 - 4:31Тепер я хочу показати вам дещо навіть
веселіше, ніж це. -
4:31 - 4:39Зверніть увагу на те як наша функція
приймає 2 числа, а потім використовує їх -
4:39 - 4:43І ми можемо змінити нашу функцію, то вона
прийматиме об'єкт і набуватиме -
4:43 - 4:45значень X та Y об'єкту.
-
4:45 - 4:49Це означає, що тут ми могли б
просто передати об'єкт. -
4:49 - 4:51Спробуємо це.
-
4:51 - 4:54Ми пропускаємо об'єкт, тепер він зламаний.
-
4:54 - 5:00Так як наша функція очікує 2 об'єкти, а
отримує тільки 1, і тому, ми змінимо її -
5:00 - 5:04щоб ввести, що це набуває facePosition, і
тепер ми отримуємо помилку, що faceX -
5:04 - 5:07не визначена, тому що раніше
-
5:07 - 5:13ми проходили по faceX як аргументу, але
тепер він не існує, ми отримуємо об'єкт. -
5:13 - 5:21І те що можемо зробити це зберегти позицію
X від об'єкта всередині змінної faceX. -
5:21 - 5:25Отже, ми говоримо, що отримали цей об'єкт,
ми знаємо, цей об'єкт має властивість X, -
5:25 - 5:28так що ми просто зберігатимемо,
в змінній faceX. -
5:28 - 5:34Ми можемо так само вчинити з
Y, отже, faceY = facePosition.y. -
5:34 - 5:35Тада!
-
5:35 - 5:38І тоді, решта частина функції
використовує faceX та faceY. -
5:38 - 5:41Тепер, нам слід переконатися, чи правильно
написали їх, тому, що якби ми ввели хх, це -
5:41 - 5:44не працюватиме, так як це не те, що тут
-
5:44 - 5:48в нашому масиві об'єктів, тому потрібно
щоб відповідали один одному. -
5:48 - 5:54Це дуже акуратно, і тепер ви можете мати
масиви об'єктів, функції, які є об'єктах -
5:54 - 5:59і ви дійсно виявите, що ваші програми
можуть бути дуже потужним з тим, як -
5:59 - 6:00вони структурують свої дані
-
6:00 - 6:05тим більше якщо так часто хотіти групувати
X і Y разом, я думаю, ви знайдете їх -
6:05 - 6:09особливо корисними у всіх ваших
зображувальних та анімаційних програм тут. -
6:09 - 6:12Таким чином, продовжуйте
і отримуйте задоволення!
- Title:
- Масиви об'єктів (відео версія)
- Description:
-
Це просто показ екрану нашої інтерактивної бесіди щодо кодування, готової щоб полегшити створення перекладу і субтитрів. Краще дивитися наші бесіди тут:
https://www.khanacademy.org/cs/programming/ - Video Language:
- English
- Duration:
- 06:12
Іван Соломаха edited Ukrainian subtitles for Arrays of Objects (Video Version) | ||
Іван Соломаха edited Ukrainian subtitles for Arrays of Objects (Video Version) | ||
Іван Соломаха edited Ukrainian subtitles for Arrays of Objects (Video Version) | ||
Іван Соломаха edited Ukrainian subtitles for Arrays of Objects (Video Version) | ||
Іван Соломаха edited Ukrainian subtitles for Arrays of Objects (Video Version) | ||
Іван Соломаха edited Ukrainian subtitles for Arrays of Objects (Video Version) | ||
Іван Соломаха edited Ukrainian subtitles for Arrays of Objects (Video Version) | ||
Іван Соломаха edited Ukrainian subtitles for Arrays of Objects (Video Version) |