Objective c 客观C中的评价

Objective c 客观C中的评价,objective-c,dynamic,eval,Objective C,Dynamic,Eval,可能重复: Objective-C中是否有eval函数(如lisp、javascript、python、ruby等) 我所说的eval是一个函数,它可以将任意Objective-C代码(可能有类定义、副作用、instrospection等)作为字符串(不是块、NSInvocation或IMP之类的东西)接收,并根据当前运行时环境状态、副作用、类定义等对每个表达式求值 如果没有,是否可以在现有运行时的范围内实现?绝对不行。Objective-C是一种完全编译的语言。只有解释语言才能做那种事。绝对

可能重复:

Objective-C中是否有eval函数(如lisp、javascript、python、ruby等)

我所说的eval是一个函数,它可以将任意Objective-C代码(可能有类定义、副作用、instrospection等)作为字符串(不是块、NSInvocation或IMP之类的东西)接收,并根据当前运行时环境状态、副作用、类定义等对每个表达式求值


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

绝对不行。Objective-C是一种完全编译的语言。只有解释语言才能做那种事。

绝对不行。Objective-C是一种完全编译的语言。只有解释语言才能做这类事情。

不。代码求值是动态语言的特性。尽管objective-C具有动态特性,甚至Cocoa运行时,它仍然被视为静态语言(通常)。

否。代码评估是动态语言的特性。尽管objective-C具有动态特性,甚至是Cocoa运行时,它仍然被视为一种静态语言(通常)。

无论是该语言还是苹果的框架都不直接支持这一点。但是,的目标之一是成为一个可嵌入的编译器套件。我很确定它可以直接在内存中生成可执行代码。困难的部分是为代码提供对调用代码的预先存在的环境的访问。例如,编译引用局部变量或类似内容的代码


(请注意,iOS应用商店禁止使用这种方法,但在Mac OS X上可能可行。)

无论是该语言还是苹果的框架都不直接支持这种方法。但是,的目标之一是成为一个可嵌入的编译器套件。我很确定它可以直接在内存中生成可执行代码。困难的部分是为代码提供对调用代码的预先存在的环境的访问。例如,编译引用局部变量或类似内容的代码


(请注意,iOS应用商店禁止使用这种方法,但它可能在Mac OS X上可行。)

,作为一种旁白,编译/解释是实现的属性,与语言无关。当然,如果实际上只有一个实现,那你就什么都买不到了。令人惊叹的迂腐,delnan。绝对值得+1。正确使用
pedantic
,@PhilipSheard+1另外,编译/解释是实现的属性,与语言无关。当然,如果实际上只有一个实现,那你就什么都买不到了。令人惊叹的迂腐,delnan。绝对值得+1。正确使用
pedantic
,@PhilipSheard+1.