Динамическое разрешение имен - PullRequest
4 голосов

Почему некоторые языки, такие как PHP и Python, используют динамическое разрешение имен ?

Единственный раз, когда я думал об его использовании, это сделать что-то вроде этого кода Python, чтобы избавить меня от необходимости явно задавать параметры для format:

"{a} {b} {c} {d}".format(**locals())

но на самом деле не требуется много работы, чтобы просто быть явным (и немного менее подвержен ошибкам):

"{a} {b} {c} {d}".format(a=a, b=b, c=c, d=d)

А для установки / получения местных жителей в одной и той же области я не понимаю, почему кто-то когда-либо использовал бы это вместо карты.

Без динамического разрешения имен выявляются опечатки, и вы можете автоматически переименовывать переменные, не прерывая вашу программу (если что-то еще не может прочитать имена переменных). С динамическим разрешением имен вы получаете что-то, что избавляет вас от ввода строки? Я что-то упустил?

Документация Python говорит, что они могут удалить его в будущем. Это больше историческая вещь? Какой на самом деле хороший вариант использования для динамического разрешения имен?

1 Ответ

1 голос
/ 21 сентября 2011

У большинства динамически типизированных языков просто нет выбора. Для выражения типа x.y вы не можете статически искать y, поскольку доступные поля зависят от типа x, который доступен только во время выполнения.

Есть способы обойти это (например, вывод типа или JIT), но поскольку базовый язык имеет для динамического поиска по имени, большинство таких языков превращают его в функцию (см., Например, силу Lua). таблицы).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...