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)
答案 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
方法作为字符串提供给单个文件。