elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado:


+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting
| | |-+  (solucionado) [Ruby] Error "undefined method"
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: (solucionado) [Ruby] Error "undefined method"  (Leído 4,643 veces)
Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.878



Ver Perfil
(solucionado) [Ruby] Error "undefined method"
« en: 20 Febrero 2012, 13:00 pm »

Hola de nuevo

Me surge un problema en la parte:
Código
  1. elsif(ARGV[0])=="-f"
  2. featuring()

Código:
`block in featuring': undefined method
 `+' for nil:NilClass (NoMethodError)

Me dice que no he definido el método, ¿Porque es tán cruel conmigo?  :-(



Código
  1. # -*- coding: UTF-8 -*-
  2.  
  3. # Métodos
  4.  
  5. def reset()
  6. renamed = 0
  7. total = -1
  8. end
  9.  
  10. def resultado()
  11. puts "Procesados: #{total} archivos"
  12. puts "Renombrados: #{renamed} archivos"
  13. end
  14.  
  15. def featuring()
  16. Find.find(ARGV[1].gsub("\\", "/")) { |path|
  17. path = path.encode('utf-8')
  18. if path[" ft. "] then
  19. File.rename(path, path.gsub(" ft. ", " feat. "))
  20. rename += 1
  21. end
  22. total += 1
  23. }
  24. end
  25.  
  26.  
  27. # Argumentos
  28.  
  29. if (ARGV[0])==()
  30. help()
  31. elsif(ARGV[0])=="/?"
  32. help()
  33. elsif(ARGV[1])==()
  34. print "\n ERROR".red.bold + " | Debe introducir una ruta...\n\n"
  35. help()
  36. elsif(ARGV[0])=="-f"
  37. reset()
  38. featuring()
  39. resultado()
  40. end



« Última modificación: 20 Febrero 2012, 16:19 pm por EleKtro H@cker » En línea



RyogiShiki


Desconectado Desconectado

Mensajes: 745


げんしけん - Hikkikomori FTW!!!


Ver Perfil WWW
Re: [Ruby] Error "undefined method"
« Respuesta #1 en: 20 Febrero 2012, 16:11 pm »

El problema de este Script está en las variables. Las variables tienen un "scope" o contexto en el que son usadas. Al terminar dicho contexto la variable desaparece. En este caso las variables se crean en el método reset(), y cuando el método reset desaparece las variables desaparecen con este y no se pueden usar en otro método diferente. Para solucionar este problema se usan las denominadas variables globales, que en Ruby se identifican porque empiezan con un signo "$". Así si defines el método reset así no debería haber más problemas:

Código
  1. def reset()
  2. $renamed = 0
  3. $total = -1
  4. end
  5.  

Y recuerda entonces que para usarlas siempre han de estar antecedidas con el signo "$" por ejemplo: "#{$total}" si las quieres mostrar dentro de la cadena sin concatenar.

Saludos


« Última modificación: 20 Febrero 2012, 16:22 pm por RyogiShiki » En línea

Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.878



Ver Perfil
Re: [Ruby] Error "undefined method"
« Respuesta #2 en: 20 Febrero 2012, 16:19 pm »

Haces que parezca tán fácil

XD

gracias Ryo
En línea



Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines