TSruby:181発言より、聞かれてもいないのにPython版(笑)
>> 今日は「変数の中身を変数名にできるか?」という質問です。
>> Perl では
>> $abc = 'def';
>> $def = 'abc';
>> print ${$abc};
>> 結果: 'abc'
>> という書き方が可能なのですが、Ruby ではこういう書き方はできないでしょ
>> うか?
参考までにPythonだとvarsという組み込み関数を、引数なしで実行すると、
現在の実行環境の名前空間を辞書で取得できます。
>>> d = vars()
>>> abcd = "efgh"
>>> efgh = "abcd"
>>> print d[abcd]
abcd
>>> print d[efgh]
efgh
>>> print vars()[abcd]
abcd
>>>
※『def』はPythonの予約語なので、ちょっと変更
ちなみに、varsで得られた辞書に新しいキーとアイテムを
書き込んだり、キーのアイテムを変更したりすれば、新しい
変数が忽然と現れたり、変数の中身が変更されたりします。
私はこういう裏技(ハック?)が好きなんですが、まとも
に考えれば、言語仕様としては無くても良い、あるいは無い
方が良いのかもしれませんね(というか、なんでPythonなんか
にこんな裏技が存在するかのほうが不思議)
/機械伯爵/