Ruby:文件输出为空

Ruby:文件输出为空,ruby,file-io,module,Ruby,File Io,Module,所以我正试图建立一个程序,告诉我离某人的生日还有多少天。我有一个文本文件,我从中绘制数据。问题是由于某种原因,保存方法不起作用,并且输出文件中没有打印任何内容。提前非常感谢 require 'date' Person = Struct.new(:name, :bday) module Family Member = Hash.new File.readlines("bday_info.txt").each do |line| name, bday = line.s

所以我正试图建立一个程序,告诉我离某人的生日还有多少天。我有一个文本文件,我从中绘制数据。问题是由于某种原因,保存方法不起作用,并且输出文件中没有打印任何内容。提前非常感谢

require 'date'

Person = Struct.new(:name, :bday)

module Family

  Member = Hash.new

    File.readlines("bday_info.txt").each do |line|
      name, bday = line.split(',')
      person = Person.new(name, bday)
      Member[name] = bday
    end

    def self.next_bday(name)
      birthday = Date.parse(Family::Member[name])
      this_year = Date.new(Date.today.year, birthday.month, birthday.day)
      next_year = Date.new(Date.today.year + 1, birthday.month, birthday.day)
      if this_year > Date.today
        puts "\n#{(this_year - Date.today).to_i} days to #{name}'s birthday"
      else
        puts "\n#{(next_year - Date.today).to_i} days to #{name}'s birthday"
      end
    end

    def self.save(name)
      File.open("days_left.txt", "w") do |file|
        file.puts "#{next_bday(name)}"
      end
    end

end

loop do
  puts "\nName:"
  response = gets.chomp.capitalize
  if response.downcase == "quit"
    break
  elsif Family::Member.has_key?("#{response}") == false
    puts "\nYou ain't on the list"
  else
  Family.next_bday(response)
  Family.save(response) #WHY IS THIS LINE NOT WORKING???
  end
end

您的
系列。下一个\u bday
不会返回任何内容(更准确地说,它返回的是最后一个
放置的
返回的
nil
),因此不会向文件写入任何内容

其他注释(不直接相关):

  • 调用
    家族没有任何原因。下一天(响应)
    两次,只需保存第一次调用的返回值即可
  • Family::Member
    constant看起来更像一个变量,更简洁的设计将使整个过程成为一个类,它接受输入文件名,读取初始值设定项中的数据,然后存储到实例变量中

  • 您的
    系列。下一个\u bday
    不会返回任何内容(更准确地说,它返回的是最后一个
    放置的
    返回的
    nil
    ),因此不会向文件写入任何内容

    其他注释(不直接相关):

  • 调用
    家族没有任何原因。下一天(响应)
    两次,只需保存第一次调用的返回值即可
  • Family::Member
    constant看起来更像一个变量,更简洁的设计将使整个过程成为一个类,它接受输入文件名,读取初始值设定项中的数据,然后存储到实例变量中