MST
星途 面试题库

面试题:Ruby目录操作与文件过滤

给定一个目录路径,使用Ruby编写代码实现遍历该目录及其所有子目录,找到所有扩展名为.rb的文件,并统计这些文件中总共包含多少个类定义(假设类定义格式为class ClassName)。
37.1万 热度难度
编程语言Ruby

知识考点

AI 面试

面试题答案

一键面试
class_count = 0
Dir.glob('指定目录路径/**/*.rb') do |file|
  File.readlines(file).each do |line|
    class_count += 1 if line =~ /^class\s+\w+/
  end
end
puts "类定义的总数: #{class_count}"

请将上述代码中的 指定目录路径 替换为实际给定的目录路径。

解释:

  1. Dir.glob('指定目录路径/**/*.rb'):用于遍历指定目录及其所有子目录下扩展名为 .rb 的文件。
  2. File.readlines(file).each:逐行读取每个找到的 .rb 文件。
  3. line =~ /^class\s+\w+/:使用正则表达式匹配以 class 开头,后面跟着空白字符和类名(由字母、数字、下划线组成)的行,匹配成功则表示找到一个类定义,类定义数量加1。
  4. 最后输出类定义的总数。