Uscita dal metodo con "break"

Come da titolo, come potrei uscire da un metodo, utilizzando il “break”,
ovvero interrompendo l’esecuzione del metodo stesso?
Per fare un piccolo esempio
class Array
def metodo(*lista)
if(lista.size<2)
puts “mancano alcuni elementi”

Break<<
end
puts “Ci sono tutti gli elementi necessari”
end
end
Se a metodo, passo meno di 2 parametri, stampa “mancano alcuni elementi”
e poi esce da tutto il metodo. Devo ragionare come se stessi catturando
un errore?

Ringrazio chiunque risponda!

Si, usa raise

ngw

Nicholas W. wrote in post #993855:

Si, usa raise

ngw
Ho seguito alcuni esempi alla voce “raise” qui
Ruby Syntax
Ma ogni volta mi restituisce un RuntimeError; posso utilizzarlo cosi?=>
if (condizione)
fai qualcosa
raise “Errore”
end

Nel tuo caso, il tipo di errore “mi hai passato dei parametri
invalidi”,
dunque l’eccezione pi appropriata ArgumentError.

class Array

  def metodo(*lista)
    unless lista.size >= 2
      raise ArgumentError, "mancano alcuni elementi"
    end
    # ...
  end

end

2011/4/20 Andrea R. [email protected]

raise “Errore”
end


Posted via http://www.ruby-forum.com/.


Ml mailing list
[email protected]
http://lists.ruby-it.org/mailman/listinfo/ml


Simone C.
Application Developer

Site & Blog: http://www.simonecarletti.com
Email: [email protected]
LinkedIn: http://linkedin.com/in/weppos
Skype: weppos

Scusa, forse non ho capito bene io, ma un bel return no?
Perché vuoi sollevare proprio un’eccezione?
Questo per quel che riguarda la tua domanda originale…

Per il resto il metodo funziona benissimo, ma guarda che l’argomento è
in entrambi i tuoi due casi di size 0: non gli passi argomenti!

prova:

a.metodo “arg1”, “arg2”

e vedi cosa ti dice. :wink:

Forse tu volevi questo:

class Array

  def metodo
    unless self.size >= 2
      raise ArgumentError, "mancano alcuni elementi"
    end
    puts "Nella lista ci sono almeno 3 elementi"
  end

end

O mi sbaglio? :slight_smile:
Ciao!

Andrea

Grazie mille Andrea. Svelato l’arcano.
Grazie a tutti voi
Nicholas W.
Simone C.
Andrea Salicetti
muchas gracias!!!

ArgumentError
a parte il fatto che non funziona molto bene, testato su irb mi
restituisce sempre “mancano alcuni argomenti”. Posto qui il codice
testato (sempre su irb):
a=[1,2,3,4,5]
b=[1]
class Array

  def metodo(*lista)
    unless lista.size >= 2
      raise ArgumentError, "mancano alcuni elementi"
    end
    puts "Nella lista ci sono almeno 3 elementi"
  end

end

a.metodo
=>ArgumentError: mancano alcuni elementi
from (irb):4:in metodo' from (irb):25 from :0 b.metodo =>ArgumentError: mancano alcuni elementi from (irb):4:inmetodo’
from (irb):26
from :0
Ancora grazie per il vostro supporto!