【问题标题】:Passing a filename as an argument in ruby在 ruby​​ 中将文件名作为参数传递
【发布时间】:2020-01-19 12:53:38
【问题描述】:
def file_to_array(filename)
  my_text = []
  File.open(filename, "r").each do |line|
    my_text << line
  end
my_text
end

你好!我的方法应该在调用时接收文件名,打开文件并将每一行移动到一个数组中。但是,它在调用时会引发undefined local variable,我假设它与文件名[DOT]ext 有关系?! 我的调用发生在下面的方法中

def clean_array
  cleaned = file_to_array(text.txt).map do |element|
    element.gsub(/\b['s\!\.\\n]*/m, "")
  end
  cleaned.map! do |el|
    el.split(" ")
    end
  return cleaned.flatten!
  #p cleaned
end

【问题讨论】:

  • 顺便说一句,在这种情况下,您可以使用方法IO::read 将文件“吞下”到一个数组中:def file_to_array(filename); IO.read(filename); end。通常你会看到File.read(filename) 而不是IO.read(filename)。没关系,因为FileIO 的子类,因此继承了后者的方法。在内存考虑要求您需要逐行读取文件的情况下,IO::foreach 通常是首选方法。

标签: ruby string methods parameters


【解决方案1】:

文件名应该是一个字符串,因此,在引号中传递:

file_to_array("text.txt")
# OR
file_to_array('text.txt')

【讨论】:

    猜你喜欢
    • 2011-07-06
    • 1970-01-01
    • 1970-01-01
    • 2010-10-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-06
    • 2015-04-07
    相关资源
    最近更新 更多