私はすでにルビーでクラスを書いています。それをFooと呼びます。今、私はそれのいくつかのインスタンスを作成したいと思います。ただし、変数に格納された値をインスタンスの名前として使用したいと考えています。
たとえば、変数barの値は「ABC」です。ここで、新しいインスタンスの名前を「ABC」というステートメントとしてABC = Foo.newにしたいと思います。
私はこれを理解できますか?可能であれば方法を教えてください。ありがとう!!!
Ruby では、eval() を使用することをためらう必要はありません。安全でない外部の影響を受けずに、プログラマーが作成したデータのみを eval() に渡す限りです。この場合、
cocos = "ABC"
class_sym = :Foo
eval "#{cocos} = #{class_sym}.new"
Eval は多くの言語で評判が悪いですが、Ruby では非常に快適で、基本的に静的コードと同じくらい高速です。
const_set
実際に定数を使用している場合にも使用できます。
constant = 'ABC'
Object.const_set constant.to_sym, Foo.new
ローカル変数として、いいえ、しかしinstance_variable_setとその仲間を使用して、作成されたオブジェクトにインスタンス変数として名前を付けることができます。