0
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)
4

2 回答 2

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")
于 2013-07-17T18:19:31.543 回答
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_namethen,在方法内部,使用Array#[]给你的IO.readlines方法一次一个文件作为字符串。

于 2013-07-17T18:18:20.300 回答