ruby hinzufügen Wert der variable um ein array

Habe ich ein Ruby-1.8.6-Skript, das nehmen sollen, um einen Dateinamen, einen Pfad enthält, erstellen Sie die Ordner dann verschieben Sie die Datei in den Ordner. Ich habe ein array created_paths zu halten, verfolgt der Ordner erstellt (das script wird eine Schleife durch viele Dateien). Ich habe ein problem hinzufügen der created_paths array.

created_paths = Array.new
file_name = "first\\second\\third.txt"
parts = file_name.split('\\')
tmp_path = ""
parts.each_with_index { |part,i|
    if i == (parts.length - 1)                
        # copy file to new dir structure
    else
        tmp_path << part << "/"
        if !created_paths.include?(tmp_path)                   
            puts "add to array: #{tmp_path}"
            created_paths.push(tmp_path)
            # create folder
        end
    end
}
puts "size=#{created_paths.length}\n"
created_paths.each { |z| print z, "\n " }

Wenn ich push tmp_path auf der created_paths array scheint es den Verweis auf tmp_path Hinzugefügt wurde und nicht der Wert. Auf der zweiten iteration der Schleife created_paths.include?(tmp_path) wird True zurückgeben. Wie bekomme ich den Wert von tmp_path gespeichert werden, in meinem array, oder vielleicht gibt es ein scope Problem mir fehlt ?

Meine Ausgabe:

add to array: first/
size=1
first/second/

Meinem vorbehalten Ausgabe:

add to array: first/
add to array: first/second/
size=2
first/
first/second/

InformationsquelleAutor Mark | 2010-03-09

Schreibe einen Kommentar