我的问题是,如果我在一个名为csv_writer.rb的文件中有一个CSVWriter类,那么我可以动态地使用我的文件名实例化这个类。
我确实尝试过使用Object.const_get()方法,但它将类的名称作为字符串作为参数。
所以无论如何要在ruby中做到这一点
由于
答案 0 :(得分:2)
您可以使用__FILE__
常量来获取文件的名称。
# foo.rb
puts __FILE__
输出
"foo.rb"
知道这一点,你可以做类似
的事情# csv_writer.rb
class CsvWriter
def initialize
puts "hello"
end
end
klass = Object.const_get(
File::basename(__FILE__, ".rb")
.split("_")
.map(&:capitalize)
.join("")
)
klass.new
输出
"hello"
PS 没有以编程方式将csv_writer
转换为CSVWriter
。 ruby如何知道将csv
变为CSV
(全部大写),但writer
仅变为Writer
?