Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby 如何在函数或方法中以编程方式定义全局函数?_Ruby_Metaprogramming - Fatal编程技术网

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似乎更接近于代码生成的目的。