2012-04-14 50 views
1

可能重复:
Is there something like Matlab's eval statement in Objective-C 2.0?EVAL在Objective-C

是否有一个eval函数(如口齿不清,JavaScript的,Python和Ruby ...)在Objective-C?

我的意思是eval是一个函数,它可以将任意Objective-C代码(可能具有类定义,副作用,内省等)作为字符串(不是块或NSInvocation或IMP或类似的东西),并评估每个表达式,尊重当前的运行时环境状态,副作用,类定义等。

如果没有,是否可以在现有运行时的范围内实现?

+0

http://stackoverflow.com/questions/1116885/is-there-something -like-matlabs-eval-statement-in-objective-c-2-0,http://stackoverflow.com/questions/2550897/eval-for-objective-c-code,http://www.google.com/search?q = objective-c + eval – rid 2012-04-14 23:00:35

回答

1

绝对不是。 Objective-C是一种完全编译的语言。只有解释型语言才能做到这一点。

+11

另外,编译/解释是实现的一个属性,与语言无关。当然,如果实际上只有一个实施,那不会为你买东西。 – delnan 2012-04-14 23:07:10

+1

那里有令人叹为观止的书呆子,delnan。绝对值得+1。 – 2012-04-14 23:19:37

+0

适当使用'迂回',@PhilipSheard。 +1 – craig 2014-12-10 12:15:29

0

编号代码eval是动态语言的功能。虽然Objective-C具有动态特性,甚至Cocoa运行时,但它仍被视为静态语言(通常)。

4

语言和Apple的框架都不直接支持这样的事情。然而,LLVM的目标之一是成为一个可嵌入的编译器套件。我很确定它可以生成可执行代码到内存中。困难的部分是提供该代码访问调用代码的预先存在的环境。例如,编译引用局部变量或类似的东西的代码。

(请注意,这种做法是被禁止的iOS应用商店,但它可能也许是可行的Mac OS X上)