假设我有一个对象需要分别是模块Bar1或Bar2的Foo1或Foo2实例,基于条件(假设var1为非假/零)。在eval中这样做很容易:
insty = eval( "bar#{var1 ? '1': '2'}::foo#{var1 ? '1': '2'}.new()")
我如何使用eval?我并不是说明显的方式:
insty = var1 ? Foo1::Bar1.new() : Foo1::Bar2.new()
而是找到一种方法,在运行中,使类名不是一个常数,而是动态,如果这有意义的话。在TCL中,它非常简单。是的,拥有它真是太好了。