1

重複の可能性:
Objective-C 2.0 に Matlab の eval ステートメントのようなものはありますか?

Objective-C に eval 関数 (lisp、javascript、python、ruby など) はありますか?

eval とは、任意の Objective-C コード (おそらくクラス定義、副作用、インストロスペクションなどを含む) を文字列 (ブロック、NSInvocation、IMP などではなく) として受け取り、評価できる関数です。現在のランタイム環境の状態、副作用、クラス定義などを考慮して、各式。

そうでない場合、既存のランタイムの範囲内で実装することは可能ですか?

4

3 に答える 3

4

言語も Apple のフレームワークも、そのようなことを直接サポートしていません。ただし、LLVMの目標の 1 つは、組み込み可能なコンパイラ スイートになることです。実行可能なコードをメモリに直接生成できると確信しています。難しい部分は、呼び出し元のコードの既存の環境へのアクセスをそのコードに提供することです。たとえば、ローカル変数などを参照するコードをコンパイルします。

(注意してください、このアプローチは iOS App Store では禁止されていますが、Mac OS X では実行できる可能性があります。)

于 2012-04-14T23:12:29.270 に答える
1

絶対違う。Objective-C は完全にコンパイルされた言語です。そのようなことができるのはインタープリター言語だけです。

于 2012-04-14T23:03:37.257 に答える
0

いいえ。コード評価は動的言語の機能です。Objective-C には動的な機能があり、さらに Cocoa ランタイムもありますが、(一般的に) 静的言語と見なされます。

于 2012-04-14T23:04:50.850 に答える