如何在类初始化中拯救输入

我有一个Ruby类,并且在类的初始化过程中,用户提供了一个文件路径和文件名,并且该类将打开该文件。

def Files
  def initialize filename
     @file = File.open(filename, "r").read.downcase.gsub(/[^a-zs]/,"").split 
  end

  def get_file
      return @file
  end

end

但问题是用户可以提供一个不存在的文件,如果是这种情况,我需要进行救援,以便我们不会向用户显示难看的回应。

我在想的是这样的

def Files
   def initialize filename
      @file = File.open(filename, "r").read.downcase.gsub(/[^a-zs]/,"").split || nil
   end
end

然后在调用我可以做的新文件的脚本中

def start
  puts "Enter the source for a file"
  filename = gets
  file = Files.new filename

  if file.get_file.nil?
    start
  else
    #go do a bunch of stuff with the file
  end
end

start

我认为这是最好的方法是因为如果传入的文件很大,我猜测最好不要将大量文本字符串作为变量传递给类。 但那可能不对。

无论如何,我真的想找出处理输入无效文件的最佳方法。


def Files
  def initialize filename
    return unless File.exist?(filename)
    @file = File.read(filename).downcase.gsub(/[^a-zs]/,"").split
  end
end
链接地址: http://www.djcxy.com/p/25273.html

上一篇: How to rescue an input in class initialization

下一篇: Rubygems. LoadError in Rails