在ruby中读取文本文件时出错

时间:2013-07-17 18:16:17

标签: ruby file

def read_file_info(*file_name)
  arr = IO.readlines(file_name)
  puts arr
end

read_file_info("abcd.txt")

中给我一个错误
readlines': no implicit conversion of Array into String (TypeError)

2 个答案:

答案 0 :(得分:5)

*file_name表示可变数量的参数,您需要使用file_name[0]提取第一个参数,检查单个参数的其他答案或使用多个文件:

def read_file_info(*files)
  files.each do |file_name|
    arr = IO.readlines(file_name)
    puts arr
  end
end

read_file_info("abcd.txt", "efgh.txt")

答案 1 :(得分:1)

将其写为:

def read_file_info(file_name)
  arr = IO.readlines(file_name)
  puts arr
end

read_file_info("abcd.txt")

这是将"abcd.txt"传递给方法时发生的情况。 *file_name创建一个数组:

def read_file_info(*file_name)
  p file_name
end

read_file_info("abcd.txt")
# >> ["abcd.txt"]

IO.readlines(file_name)要求将单个文件名作为字符串,但您为其指定了Array,而这又会给您错误:

no implicit conversion of Array into String (TypeError)

如果您想使用*file_name,请在方法内部使用Array#[]一次将IO.readlines方法作为字符串提供给单个文件。