Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/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程序的最佳方式是什么?_Ruby_Metaprogramming_Eval - Fatal编程技术网

从Ruby程序执行Ruby程序的最佳方式是什么?

从Ruby程序执行Ruby程序的最佳方式是什么?,ruby,metaprogramming,eval,Ruby,Metaprogramming,Eval,我想从Ruby脚本在一个循环中执行类似的操作: 编写一个文件a.rb(它会更改每次迭代) 执行系统(ruby'a.rb') a、 rb将带有结果的字符串写入文件“results” a、 rb完成,Ruby返回“true”(假设没有错误) 调用脚本读取文件“results”并执行操作 我认为有很多更好的方法可以做到这一点。例如,我可以不执行第2步到第5步吗 只需加载“a.rb”(在循环中)并调用它的一个方法?使用eval()或其他方法有更好的方法吗?(了解元编程在我的Ruby任务列表中。)我认为e

我想从Ruby脚本在一个循环中执行类似的操作:

  • 编写一个文件a.rb(它会更改每次迭代)
  • 执行系统(ruby'a.rb')
  • a、 rb将带有结果的字符串写入文件“results”
  • a、 rb完成,Ruby返回“true”(假设没有错误)
  • 调用脚本读取文件“results”并执行操作
  • 我认为有很多更好的方法可以做到这一点。例如,我可以不执行第2步到第5步吗
    只需加载“a.rb”(在循环中)并调用它的一个方法?使用eval()或其他方法有更好的方法吗?(了解元编程在我的Ruby任务列表中。)

    我认为
    eval
    可能是动态生成代码的正确解决方案;这就是它的设计目的。与其创建
    a.rb
    ,只需
    eval('some-code-that-will-waid-in-a.rb')

    相关问题:为什么需要
    a.rb
    ?为什么不让主脚本编写
    结果
    文件本身呢?您要写入a.rb的代码来自哪里?它必须是一个字符串,或者它可能是你的主脚本的代码吗?谢谢你,姆拉登。很抱歉花了这么长时间才回来。主程序正在构造Ruby程序(在循环中),它将其存储在字符串数组(或一个长字符串)中。然后需要指示Ruby运行这些程序中的每一个。结果文件只是一种蛮力的方式,让每个构建的程序将结果发送回主程序。哇,太快了!Borealid,您的意思是eval的参数是一个包含所有代码的字符串,\n在每行代码的末尾?我希望代码包含一个字符串数组,当然我可以将其转换为单个字符串。@Cary Swoveland:传递给
    eval
    的单个块的大小取决于您尝试执行的操作,即任务的“粒度”。一般来说,您应该尽量减少对
    eval
    的不同调用的数量。我看到了很多全局破坏ruby的方法,所以只对受信任的代码使用eval。