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)
*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")
写成:
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
then,在方法内部,使用Array#[]
给你的IO.readlines
方法一次一个文件作为字符串。