Autor
|
Tema: [RUBY] Es posible variable distinta dentro de for? (Leído 3,375 veces)
|
tbgio
Desconectado
Mensajes: 13
|
El asunto no sé como ponerlo mas resumido. Lo que quiero es que se me genere dentro de un for tantas variables como veces se repita, pero todas las variables distintas, algo así: for [i]i[/i] 1..5 do valor[[i]i[/i]] = [i]i[/i] + 1 end # => valor1 = 2 # => valor2 = 3 # => valor3 = 4 # => valor4 = 5 # => valor5 = 6 ¿Es posible?
|
|
|
En línea
|
|
|
|
Novlucker
Ninja y
Colaborador
Desconectado
Mensajes: 10.683
Yo que tu lo pienso dos veces
|
Nunca he tocado Ruby más allá de un par de veces, pero no es la primera vez que veo ese tipo de pregunta (para muchos lenguajes diferentes), así que ... para que necesitas generar tantas variables y no usas un array/vector?
Saludos
|
|
|
En línea
|
Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD "Hay dos cosas infinitas: el Universo y la estupidez humana. Y de la primera no estoy muy seguro." Albert Einstein
|
|
|
tbgio
Desconectado
Mensajes: 13
|
porque estoy hacuiendo otro script para extraer archivos, y de la forma que este está hecho, tiene una parte que tiene los nombres de los archivos y otro que tiene los datos. Como no se especifica la distancia a la que está del nombre del archivo si no lo que mide, necesito que cada vez que se lea el nombre del archivo me guarde esta distancia en un variable distinta.
De todas formas, quizás estoy confundiendo variable con array. Aún así, ¿me podría funcionar el comando push() para eso que quiero hacer?
|
|
|
En línea
|
|
|
|
Novlucker
Ninja y
Colaborador
Desconectado
Mensajes: 10.683
Yo que tu lo pienso dos veces
|
Me perdí, que distancia? que archivo? Explicate un poco mejor de que va el archivo que necesitas crear, y que hace el otro que ya tienes Saludos
|
|
|
En línea
|
Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD "Hay dos cosas infinitas: el Universo y la estupidez humana. Y de la primera no estoy muy seguro." Albert Einstein
|
|
|
tbgio
Desconectado
Mensajes: 13
|
Tengo un archivo que está construido de la siguiente manera: 0x000 04 bytes: Número de direcciones en la tabla 0x004 04 bytes: Cuanto mide el contenido del archivo = $a 0x008 04 bytes: Cuanto mide el nombre del archivo = $b 0x00c $b bytes: Nombre del archivo Despues de repetirse desde el 0x004 al 0x00c dependiendo de las direcciones que tenga la tabla, a continuación viene el contenido de cada archivo en el mismo orden en el que han aparecido. Sabiendo esto, he creado el siguiente codigo: nombrearchivo = "C:/Program Files/CCP/EVE/resLocalization.stuff" arch = File.new(nombrearchivo, "rb") arch_leer = File.new(nombrearchivo, "rb") dirtotal = arch.sysread(4).unpack('V*').join.to_i nombrearchivo = "hola/" # Leo el archivo cuenta0 = 4 valor5 = [] valor6 = [] for cuenta1 in 1..dirtotal do valor1 = arch.sysread(4).unpack('V*').join.to_s valor2 = arch.sysread(4).unpack('V*').join.to_i cuenta0 = cuenta0 + 8 valor3 = cuenta0 for cuenta2 in 1..valor2 do cuenta0 = cuenta0 + 1 valor4 = arch.read(1).bytes.first if valor4 == 92 arch.seek(valor3, IO::SEEK_SET) content = arch.read(cuenta2) Dir::mkdir("#{nombrearchivo+content.chop}") unless File.directory?("#{nombrearchivo+content.chop}") == TRUE end end arch_leer.seek(valor3, IO::SEEK_SET) content = arch_leer.read(valor2) cuenta0 = cuenta0 + 1 arch.sysread(1) valor5.push(valor1) valor6.push(content) end sleep 1 for cuenta2 in 0..dirtotal-1 do puts "guardado #{nombrearchivo+valor6[cuenta2]}" save_arch = File.open("#{nombrearchivo+valor6[cuenta2]}", File::CREAT | File::WRONLY | File::TRUNC) save_arch.syswrite("#{valor5[cuenta2]}") unless File.directory?("#{nombrearchivo+valor6[cuenta2]}") == TRUE end puts "Fin" El código no está terminado, pero con la función push() creo haber podido solucionar la duda que tenía.
|
|
|
En línea
|
|
|
|
tbgio
Desconectado
Mensajes: 13
|
Script modificado. Por cierto, terminado el extractor de archivos *.stuff del juego EVE: nombrearchivo = "C:/Program Files/CCP/EVE/resCharacterModularFemaleHiRes00.stuff" arch = File.new(nombrearchivo, "rb") dirtotal = arch.sysread(4).unpack('V*').join.to_i eve = "EVE/" Dir::mkdir("#{eve}") unless File.directory?("#{eve}") == TRUE cuenta0 = 4 valor5 = [] valor6 = [] for cuenta1 in 1..dirtotal do valor1 = arch.sysread(4).unpack('V*').join.to_i valor2 = arch.sysread(4).unpack('V*').join.to_i cuenta0 = cuenta0 + 8 valor3 = cuenta0 for cuenta2 in 1..valor2 do cuenta0 = cuenta0 + 1 valor4 = arch.read(1).bytes.first if valor4 == 92 arch.seek(valor3, IO::SEEK_SET) content = arch.read(cuenta2) Dir::mkdir("#{eve+content.chop}") unless File.directory?("#{eve+content.chop}") == TRUE end valor7 = cuenta0 end arch.seek(valor3, IO::SEEK_SET) content = arch.read(valor2) arch.seek(valor7, IO::SEEK_SET) cuenta0 = cuenta0 + 1 arch.sysread(1) valor5.push(valor1) valor6.push(content) end sleep 1 for cuenta1 in 0..dirtotal-1 do puts "Creado #{eve+valor6[cuenta1]}"
save_arch = File.open("#{eve+valor6[cuenta1]}", File::CREAT | File::WRONLY | File::TRUNC) save_arch.syswrite("#{arch.read(valor5[cuenta1])}") unless File.directory?("#{eve+valor6[cuenta1]}") == TRUE end puts "Fin"
|
|
|
En línea
|
|
|
|
Novlucker
Ninja y
Colaborador
Desconectado
Mensajes: 10.683
Yo que tu lo pienso dos veces
|
Justamente me refería a utilizar un array ( []) para ir metiendo cada uno de esos valores que ibas leyendo, donde cada item del array es un elemento. Por otra parte, te sugiero comenzar a utilizar variables que resulten más representativas, porque así como esta se hace bastante "feo" leer el código Saludos
|
|
|
En línea
|
Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD "Hay dos cosas infinitas: el Universo y la estupidez humana. Y de la primera no estoy muy seguro." Albert Einstein
|
|
|
tbgio
Desconectado
Mensajes: 13
|
Ya ya jajaja, gracias, y así lo hago, pongo cosas mas lógicas que no valorX, pero este lo hice muy rápido porque me urgía sacarlos archivos.
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Variable incremental dentro de un FOR
Scripting
|
Stati98
|
2
|
3,821
|
22 Julio 2009, 20:48 pm
por Stati98
|
|
|
[Batch]No consigo que funcione una variable dentro de un for
Scripting
|
teamcpc
|
1
|
3,472
|
15 Enero 2011, 18:06 pm
por leogtz
|
|
|
[Ruby] Modificar variable de un objeto dentro de una clase
Scripting
|
Eleкtro
|
2
|
3,227
|
23 Febrero 2012, 10:52 am
por Eleкtro
|
|
|
(Solucionado) [Ruby] Exportar una variable a la shell del SO?
Scripting
|
Eleкtro
|
1
|
2,832
|
3 Marzo 2012, 02:40 am
por Eleкtro
|
|
|
pasar atributo value a variable en Ruby
Scripting
|
daniel.r.23
|
2
|
2,245
|
12 Marzo 2013, 16:34 pm
por daniel.r.23
|
|