Ruby 如何在函数或方法中以编程方式定义全局函数?
比如说,Ruby 如何在函数或方法中以编程方式定义全局函数?,ruby,metaprogramming,Ruby,Metaprogramming,比如说, def makeFunction name ... #define a function with the name supplied end makeFunction 'functionMade' functionMade 我知道可以通过lambda或proc生成一个全局变量$functionMade,但是否可以使它真正成为一个没有$前缀的函数?我想通过内核上的类eval: Kernel.class_eval <<-RUBY def abc put
def makeFunction name
... #define a function with the name supplied
end
makeFunction 'functionMade'
functionMade
我知道可以通过
lambda
或proc
生成一个全局变量$functionMade
,但是否可以使它真正成为一个没有$
前缀的函数?我想通过内核上的类eval
:
Kernel.class_eval <<-RUBY
def abc
puts 'abc'
end
RUBY
Kernel.class\u eval酷!我想生成一组在外部加载的JSON中指定的函数:真的!记住eval是Evil@albert:您是否考虑过Struct或OpenStruct是否适合您的需要?这很危险。。您可能会意外地对Ruby内置的东西进行修补/覆盖。。鲁宾逊会有危险的@Andrewgrim:我正在制作一个汇编代码生成器。数据表中有数百条说明。我只是粘贴规范,比如'ADC{S}{,},#'
,然后对其进行解析以生成函数,这样Ruby代码看起来就像汇编代码adc R1,R2,100
这将生成实际的汇编代码,adc R1,R2,#100
我已经用javascript完成了这项工作,但是Ruby似乎更接近于代码生成的目的。