Hola, estoy empezando con Ruby y estoy haciendo unos tutoriales que encontré en http://rubytutorial.wikidot.com En el capítulo que habla sobre Arrays, uno de los ejercicios propuestos es sumar los elementos que hay almacenados en un vector. Había planteado el programa de la siguiente manera pero todo el rato tengo errores que no sé como depurar. 1-He creado una función que suma dos números para sumar el componente del array correspondiente más las sumas anteriores. 2-He inicializado el sumador parcial (buffer) como 0, para que en la primera iteración se almacene el primero de los componentes del vector. 3-He intentado hacer la suma de los elementos del vector. ------------------------ vect = [1, 2, 3, 4, 5] def suma(num,buffer) suma = num + buffer return suma end parcial=0 vect.each do |vect| sumador = suma(vect,parcial) parcial = sumador return sumador end -------------------- El error que me da es el siguiente: unapruebamas.rb:174:in `block in <main>': unexpected return (LocalJumpError) from unapruebamas.rb:171:in `each' from unapruebamas.rb:171:in `<main>' La fila 171 se corresponde con la de VECT.EACH.... Estoy bastante perdido. Agradecería cualquier tipo de pista :) Pablo.
on 2012-09-28 13:44
on 2012-09-28 13:55
Hi, This isn't the spanish Ruby group, so use English, please. The error message is telling you that you cannot use "return" in this context (you're not in a method). I'm not even sure what you want. Return from the "each" method? Jump to the next element? As far as I can tell, you don't need any of this, so just delete the "return sumador". In fact, your code is quite complicated for this simple task. Do you really need a method just to add two numbers? I'd simply do this: vect = [1, 2, 3, 4, 5] sum = 0 vect.each do |number| sum += number end That's it. Ruby also has a method for this kind of operation: Enumerable#inject http://ruby-doc.org/core-1.9.3/Enumerable.html#met... So you could boil it down to: vect = [1, 2, 3, 4, 5] vect.reduce :+
on 2012-09-28 13:57
2012/9/28 Pablo D. <lists@ruby-forum.com>: > > suma = num + buffer > > > Estoy bastante perdido. Agradecera cualquier tipo de pista :) Hola Pablo. Lo primero es que esta lista es en ingles, no s si en general tendrs muchas respuestas. Lo segundo, return es para salir de una funcion, no lo puedes usar en un bloque. Yo creo que simplemente quitandolo ya te funcionaria. Suerte con el Ruby, sigue adelante y vers cmo luego hay otras maneras ms sencillas de hacer estas tareas. Jesus.
Please log in before posting. Registration is free and takes only a minute.
Existing account
(Switch to SSL-encrypted connection)
NEW: Do you have a Google/GoogleMail or Yahoo account? No registration required!
Log in with Google account | Log in with Yahoo account
Log in with Google account | Log in with Yahoo account
No account? Register here.