Как это называется в информатике? - PullRequest
7 голосов
/ 13 октября 2008

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

Flex пример ("selectAll ()"):

<mx:Button click="selectAll()" label="Select All"/>

Mate пример ("цена"):

<Injectors target="{QuotePanel}">
  <PropertyInjector targetKey="price" source="{QuoteManager}" sourceKey="currentPrice" />
</Injectors>

Пример Java ("Foo"):

Class.forName("Foo")

Есть много других примеров. Вы поняли идею. Что меня беспокоит, так это то, что практически нет способа проверить это во время компиляции, и IDE мало что может сделать с точки зрения дополнения кода, навигации и рефакторинга. Но это не главное.

Мой вопрос: как это называется? Не думаю, что это один из них: динамическая привязка , привязка имени , отражение

Обновление : Нет, это не тест, извините, если он звучит как один. Это просто вопрос «назови эту песню» для программирования.

Обновление : Ответы, которые помогли:

  • От Тима Лешера: Это называется "поздняя привязка", "динамическая привязка" или "привязка во время выполнения". Тот факт, что он связывается строкой, является просто деталью реализации ...
  • От Конрада Рудольфа: ... это просто ввод для переводчика .

Обновление : Как правильно отметили люди, некоторые из примеров имеют позднюю привязку, некоторые - рефлексию, некоторые - оценку во время выполнения (интерпретацию) и т. Д. Однако я пришел к выводу, что, вероятно, нет названия это описывает их всех. Это просто набор примеров, у которых есть что-то общее, но недостаточно, чтобы дать ему имя. Мне понравился ответ "все является строкой", но хотя он и забавный, он также не вполне оправдывает себя.

Ответы [ 17 ]

1 голос
/ 13 октября 2008

Я думаю, что пример Flex не совсем такой же, как в Java (другие вещи не знаю). Явный пример - это то, что я бы назвал позднее связывание , потому что загрузчик классов разрешает имя класса во время выполнения, самое позднее возможное время для этого.

Flex MXML - это в основном другой синтаксис, который в конечном итоге компилируется в то, что вы могли бы также написать в ActionScript. Насколько я могу судить, mx: Button и функция selectAll () разрешены во время компиляции . По крайней мере, mxmlc выдает ошибки, если вы используете там неопределенный символ.

1 голос
/ 13 октября 2008

Кстати, я предполагаю, что код Flex, который вы нам показали, использует просто вызов ActionScript, и в этом случае атрибут click будет просто eval 'интерпретатором документа Flex. Таким образом, за этим кодом нет особой магии, это просто ввод для интерпретатора.

1 голос
/ 13 октября 2008

"самоанализ"?

0 голосов
/ 13 октября 2008

Первый пример - это пример того, как пространство имен xml может принимать значения во время компиляции, Вторым является как привязка данных / зависимость зависимость Третий пример - Reflection, если бы мне пришлось пометить все эти 3 примера именем, я думаю, что я пойду на «Синтаксис»

0 голосов
/ 13 октября 2008

В мире .NET мы называем эту привязку данных, и она обрабатывается с использованием отражения.

Это также сильно напоминает мне внедрение зависимостей.

0 голосов
/ 13 октября 2008

Пример Java, который вы дали, называется динамической загрузкой классов. Я не уверен, что другие примеры - то же самое. Но это полезно в размышлениях. Возможно, вы ищете шаблон проектирования, который называется Inversion of control.

0 голосов
/ 13 октября 2008

Пахнет мне как указатель на функцию.

...