面试题答案
一键面试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}"
请将上述代码中的 指定目录路径
替换为实际给定的目录路径。
解释:
Dir.glob('指定目录路径/**/*.rb')
:用于遍历指定目录及其所有子目录下扩展名为.rb
的文件。File.readlines(file).each
:逐行读取每个找到的.rb
文件。line =~ /^class\s+\w+/
:使用正则表达式匹配以class
开头,后面跟着空白字符和类名(由字母、数字、下划线组成)的行,匹配成功则表示找到一个类定义,类定义数量加1。- 最后输出类定义的总数。