Je ferai juste un if...else plutôt que deux if pour le File.directory? :
1 2 3 4 5 6 7 8 9 10
| Dir.entries('.').each do |filename|
next if filename == "." || filename == ".."
if File.directory?(filename)
Dir.entries(filename).each do |subFilename|
puts subFilename if !File.directory?(subFilename)
end
else
puts filename
end
end |
Sinon, je ne pense pas que ce soit nécessaire de simplifier plus que ça dans ce cas
Le yield te permet d'injecter du code en plein dans une fonction. Typiquement la méthode "each" que tu as utilisée :
1 2 3
| Dir.entries('.').each do |filename|
# ton code
end |
Le yield s'utilise comme ça :
1 2 3 4 5 6 7 8 9 10 11 12
| def foo
x = 42
puts "Debut de la fonction"
yield x
puts "Fin de la fonction"
end
begin
foo do |x|
puts "x = #{x}"
end
end |
Ce bout de code produit le résultat suivant :
Debut de la fonction
x = 42
Fin de la fonction
Partager