Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/24.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_Class_Require_Ruby 1.9.3 - Fatal编程技术网

只加载Ruby中使用的类?

只加载Ruby中使用的类?,ruby,class,require,ruby-1.9.3,Ruby,Class,Require,Ruby 1.9.3,如果我加载x.rb。是否可以检查和查看正在使用哪些类并仅加载这些类 假设x.rb同时包含Hello和再见类,并且我的程序只使用Hello类,那么是否可以只加载Hello类 很高兴看到一个脚本检查文档,并输出一个只有Hello类和使用它的代码的.rb。。。如果github项目不存在,那将是一个有趣的github项目,但我认为这超出了我的atm技能。注意:我误解了问题的一部分,而另一部分不知何故避开了我。。。我一定是在多任务工作。无论如何,这个答案只回答了一半的问题,而且是错误的;只是说说而已 好的

如果我加载
x.rb
。是否可以检查和查看正在使用哪些类并仅加载这些类

假设x.rb同时包含Hello和再见类,并且我的程序只使用Hello类,那么是否可以只加载Hello类


很高兴看到一个脚本检查文档,并输出一个只有Hello类和使用它的代码的.rb。。。如果github项目不存在,那将是一个有趣的github项目,但我认为这超出了我的atm技能。

注意:我误解了问题的一部分,而另一部分不知何故避开了我。。。我一定是在多任务工作。无论如何,这个答案只回答了一半的问题,而且是错误的;只是说说而已

好的,这里有一个可能很昂贵的方法,但是试试这样的方法:

$ cat definer.rb
class Foo
  def greet(person)
    puts "Hello, #{person}!"
  end
end
Bar = Class.new

$ cat finder.rb
$LOAD_PATH << File.dirname "."
before = Object.constants
require 'definer'
after = Object.constants
print (before - after).join(" ")

$ cat looker.rb
differences = `ruby finder.rb`.split(" ")
puts "The following constants will be defined when finder.rb is loaded: #{differences.join(", ")}"
$cat definer.rb
福班
def问候(人)
放上“你好,{person}!”
结束
结束
Bar=Class.new
$cat finder.rb

$LOAD_PATH当类在它们自己的单独文件中定义时,您可以使用ª²方法:

autoload :Hello,   'x/hello'
autoload :Goodbye, 'x/goodbye'
编写
Hello
时,实际上是在访问
Hello
常量<代码>自动加载
使用
常量缺失
在未定义常量时自动要求文件

请注意,我们仍然在这里处理文件。只需读取和评估
x/hello.rb
的内容。该代码可以运行任何操作。它可以
需要
其他文件。它可以定义一百万个其他类

这是因为源代码实际上只是文本。这对于解释语言尤其如此。例如在Ruby中,没有这样的东西



²不,那是不可能的。源文件将全部加载和评估。为什么不使用单独的文件呢?您和计算机在专门加载Hello类上花费的时间和内存可能比简单地随它一起加载“再见”要多。我看不到与问题的联系?它将打印
definer.rb
定义的所有常量,没有在主程序中执行此操作。等一下。。。我想我发错问题了。。。facepalmQuote的问题:“是否有可能检查并查看正在使用哪些类并仅加载这些类?”这个答案没有解决这两个问题,IMHOI不知道,我主要是想阻止您发明另一个可能更复杂的涉及套接字的示例(?),因为您可能只会浪费时间。。毕竟,我认为这不是一个明智的问题