1

我正在尝试用 Ruby 编写一个脚本,该脚本以交互方式为程序生成一些输入数据。这个想法是在 QtRuby 存在时使用它,否则使用控制台。我尝试的是

begin
  require "Qt4"
rescue LoadError => load_err
  puts "Qt not found, using console"
end

class ConsoleDefine
  # console code
end

class QtDefine < Qt::Widget
  # GUI code
end

但是当 Qt4 不存在时,解释器拒绝了我的代码。有没有办法像 C++ 一样处理它,比如:

#ifdef QT4
class qt4gui 
{
    // some code
};
#else
class qt4gui
{
    // dummy
};
#endif // Qt4
4

2 回答 2

4

使用 require 对您有利:

begin
  require "Qt4"
  require "my_lib/qt4"
rescue LoadError => load_err
  puts "Qt not found, using console"
  require "my_lib/console"
end

创建两个文件:

# my_lib/console.rb
class ConsoleDefine
  # console code
end

# my_lib/qt4.rb
class QtDefine < Qt::Widget
  # GUI code
end
于 2013-02-11T19:15:16.087 回答
1

正如@pst 所说,Ruby 中不需要预处理器,因为它是动态的。所以:

begin
  require "Qt4"
   class QtDefine < Qt::Widget
     # GUI code
   end
rescue LoadError => load_err
  puts "Qt not found, using console"
   class ConsoleDefine
     # console code
   end
end
于 2013-02-11T19:15:51.237 回答