Ви не повинні викликати розбір, побачивши callSomething()
(я вважаю, що ви мали на увазі, callSomething
а не doSomething
). Різниця між a
і callSomething
полягає в тому, що один - це визначення методу, а інший - виклик методу.
Коли ви побачите нове визначення, ви хочете зробити перевірки, пов’язані із тим, щоб переконатися, що ви можете додати це визначення, так:
- Перевірте, чи функція вже не існує з такою ж підписом
- Переконайтесь, що декларування методу виконується у належному масштабі (тобто чи можуть бути оголошені методи всередині декларацій інших методів?)
Припускаючи, що ці чеки проходять, ви можете додати їх на свою карту і почати перевірку вмісту цього методу.
Коли ви знайдете такий виклик методу callSomething()
, вам слід виконати такі перевірки:
- Чи
callSomething
існує на вашій карті?
- Чи правильно його називають (кількість аргументів відповідає підпису, який ви знайшли)?
- Чи є аргументи дійсними (якщо використовуються імена змінних, вони оголошені? Чи можна отримати доступ до цього обсягу?)?
- Чи можна зателефонувати чомусь звідки ви перебуваєте (це приватний, громадський, захищений?)?
Якщо ви вважаєте, що callSomething()
це нормально, то на даний момент, що ви хотіли б зробити насправді, залежить від того, як ви хочете підійти до цього. Власне кажучи, щойно ви знаєте, що в даний момент такий виклик нормальний, ви могли зберегти лише ім'я методу та аргументи, не вникаючи в деталі. Під час запуску програми ви будете викликати метод з аргументами, які ви повинні мати під час виконання.
Якщо ви хочете піти далі, ви можете зберегти не просто рядок, а посилання на фактичний метод. Це було б ефективніше, але якщо вам доведеться керувати пам'яттю, це може заплутатися. Я б рекомендував вам спочатку просто потримати рядок. Пізніше ви можете спробувати оптимізувати.
Зауважте, що це все, припускаючи, що ви лексикували свою програму, а це означає, що ви розпізнали всі маркери у вашій програмі та знаєте, що вони є . Це не означає, що ви знаєте, якщо вони мають сенс разом, що є етапом розбору. Якщо ви ще не знаєте, що таке маркери, пропоную вам спочатку зосередитися на отриманні цієї інформації.
Я сподіваюся, що це допомагає! Ласкаво просимо до програмістів SE!