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看起来更像一个变量,更简洁的设计将使整个过程成为一个类,它接受输入文件名,读取初始值设定项中的数据,然后存储到实例变量中