Buenas estimados amigos de la lista.
gracias por la ayuda tan especial que nos brindan.
ahora tengo una inquietud de ruby y es sobre array de objetos.
como puedo mejorar este codigo?
sobre todo la parte de cargar el objeto y el array.
class Persona
attr_accessor :nombre
attr_accessor :apellido
attr_accessor :ciudad
attr_accessor :telefono
def initialize(nombre, apellido, ciudad, telefono)
@nombre = nombre
@apellido = apellido
@ciudad = ciudad
@telefono = telefono
end
end
#esto se va a repetir
#como puedo mejorar esto?
dato = Persona.new(“william”,“betancur”,“medellin”,“222222”)
arr=[dato]
dato = Persona.new(“mateo”,“gonza”,“medellin”,“222333”)
arr << dato
dato = Persona.new(“guille”,“hhhhhh”,“medellin”,“44444”)
arr << dato
hasta aca se va a repetir
arr.each do |d|
puts d.nombre
puts d.ciudad
end
gracias
2009/5/28 Aprendiz_ror Ruby on rails
[email protected]:
class Persona
 end
dato = Persona.new(“guille”,“hhhhhh”,“medellin”,“44444”)
arr << dato
hasta aca se va a repetir
arr.each do |d|
 puts d.nombre
 puts d.ciudad
end
gracias
No te ahorras demasiado, pero creo que queda algo más claro:
arr = [Persona.new(“william”,“betancur”,“medellin”,“222222”),
Persona.new(“mateo”,“gonza”,“medellin”,“222333”),
Persona.new(“guille”,“hhhhhh”,“medellin”,“44444”)]
Suerte.
2009/5/28 Aprendiz_ror Ruby on rails [email protected]
@ciudad = ciudad
@telefono = telefono
end
end
Persona = Struct.new(:nombre,:apellido,:ciudad,:telefono)
hasta aca se va a repetir
dato = []
dato << Persona.new(%w(william betancur medellin 2222222))
dato << Persona.new(%w(mateo gonza medellin 22232222))
dato << Persona.new(*%w(guille guapo mucho 4444444))
arr.each do |d|
puts d.nombre
puts d.ciudad
end
puts arr.map{|p| [p.nombre,p.cidudad] * “\n” } * “\n”
Hasta donde yo se, ninguna de las cosas que hecho mejor
sustancialmente nada. La asignación de persona,
no tiene diferencias respecto a tu implementación, es más una estructura
te
da más facilidades.
La última expresión, tiene el problema que, pese a que haga solo una
llamada
al sistema para imprimir, si el array es muy grande, puede duplicar la
cantidad de memoria requerida.
Tampoco he entendido que quieres decir con “mejorar” un código. Lo
quieres
más rápido, más legible, no entiendo que es lo que quieres muy bien.
De todas formas, tal vez en una lista especializada en ruby como ruby-es
te
puedan ayudar más.
Un Saludo.
Gracias Daniel por tu respuesta.
suponiendo que esta parte:
arr = [Persona.new(“william”,“betancur”,“medellin”,“222222”),
Persona.new(“mateo”,“gonza”,“medellin”,“222333”),
Persona.new(“guille”,“hhhhhh”,“medellin”,“44444”)]
se cargara en un ciclo, donde los valores se ingresan por teclado.
es a modo de ejercicio de ruby.
saludos y gracias
Daniel R. Troitiño wrote:
2009/5/28 Aprendiz_ror Ruby on rails
[email protected]:
class Persona
 end
dato = Persona.new(“guille”,“hhhhhh”,“medellin”,“44444”)
arr << dato
hasta aca se va a repetir
arr.each do |d|
 puts d.nombre
 puts d.ciudad
end
gracias
No te ahorras demasiado, pero creo que queda algo más claro:
arr = [Persona.new(“william”,“betancur”,“medellin”,“222222”),
Persona.new(“mateo”,“gonza”,“medellin”,“222333”),
Persona.new(“guille”,“hhhhhh”,“medellin”,“44444”)]
Suerte.