我是 Ruby 的新手,并且来自 Python 背景。为了帮助学习该语言,我正在移植一个现有的 Python 脚本,以便进行并排比较。到目前为止,我有一小段代码并且对为什么'nil'打印到控制台感到困惑。下面的代码:
#!/usr/bin/ruby
require 'date'
backup_dirs = ['/backups/db', '/backups/log']
backup_dirs.each do |backup_dir|
Dir.glob(backup_dir + '/' + '*.*.*.*.*.*').each do |filename|
begin
creation_date = DateTime.strptime(filename.split('.')[3], '%m%d%Y%H%M')
rescue
puts "Skipping #{filename}, invalid file."
end
end
puts 'File is okay.'
end
如果该DateTime.strptime方法抛出异常,rescue则运行并puts打印出字符串。除了,在它出现之后nil。我“用谷歌搜索”,发现puts返回nil. 但是为什么只显示在rescue区域而不显示File is okay.在行中。
即一个示例rescue输出将是:
Skipping /backups/log/fs.server.dir.999999999999.14.log, invalid file.
nil
而且,如何让它停止向控制台显示?我确信这是一个基本的语言事物,对语言来说非常新,所以任何见解都会非常感激。
谢谢 - 汤姆