2013-07-17 175 views
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) 

回答

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方法一次一个文件作为字符串。

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")