运行时反射可以做什么,编译时不能?

时间:2014-06-08 14:41:11

标签: reflection runtime introspection rust compile-time

我已经看到一些观点认为Rust和M#可能会选择编译时反射,因为运行时反射很昂贵并且增加了二进制文件的大小。到目前为止,我找不到任何好的比较,只是一些运行时反思的观点很少是一个好主意"。似乎探索内置编译时反射概念的语言仍处于开发阶段。

到目前为止我读过的资料来源:

1 个答案:

答案 0 :(得分:1)

这里有一些Ruby:

m = STDIN.gets.chomp

puts Object.respond_to?(m)

在编译时不可能这样做。我的意思是,使用CTFE,您可以技术上在编译时运行此代码,但作为正在运行的程序的一部分,它不会真正起作用。

另一个有趣的一个:

$m = STDIN.gets.chomp

class Object
   define_method $m do
     puts "zomg"
   end
end

class Foo; end

Foo.new.send($m)

这打印" zomg"。