Вопрос по objective-c – Eval в Objective-C [дубликат]

1

Possible Duplicate:
Is there something like Matlab's eval statement in Objective-C 2.0?

Есть ли функция eval (как в lisp, javascript, python, ruby ...) в Objective-C?

Под eval я подразумеваю функцию, которая может принимать произвольный код Objective-C (возможно, с определениями классов, побочными эффектами, инстроспекцией и т. Д.) В виде строки (а не блока, NSInvocation, IMP или чего-то в этом роде) и оценивать каждое выражение, учитывая текущее состояние среды выполнения, побочные эффекты, определения классов и т. д.

Если нет, возможно ли реализовать в рамках существующей среды выполнения?

Ваш Ответ

3   ответа
0

что у target-C есть динамическая функция и даже среда выполнения Cocoa, она все еще считается статическим языком (как правило).

4

ни платформы Apple напрямую не поддерживают такую вещь. Тем не менее, одна из целейLLVM должен быть встраиваемым компилятором. Я уверен, что он может генерировать исполняемый код прямо в память. Трудной частью было бы предоставить этому коду доступ к уже существующей среде вызывающего кода. Например, компиляция кода, который ссылается на локальную переменную или что-то в этом роде.

(Имейте в виду, этот подход запрещен для iOS App Store, но он может быть работоспособен в Mac OS X.)

1

нтерпретированные языки могут делать такие вещи.

Потрясающе педантичный там, Делнан. Определенно заслуживает +1.
Правильное использованиеpedantic@PhilipSheard. +1
Кроме того, скомпилированный / интерпретированный является свойством реализации, не привязанным к языку. Конечно, если фактически существует только одна реализация, это ничего вам не даст.

Похожие вопросы