Dúvidas básicas de Ruby

Olá pessoal, estava fazendo um programa simples em Ruby quando me deparei com algumas dificuldades. Vamos lá:

[code]class AF

def AF.verificaCadeia()

puts "Informe a cadeia:"
cadeia = gets

raise "Informe a Cadeia!" if cadeia.empty? || cadeia.nil?
#throw :vazio if cadeia.empty? || cadeia.nil?

for i in (0...cadeia.length - 1)
  puts cadeia[i]
end

end

catch :vazio do

puts “Informe a Cadeia!”

end

end

begin
AF.verificaCadeia()
rescue StandardError => ex
puts "Erro: #{ex}"
end[/code]
Só aí já tenho várias dúvidas:
:arrow: A parte comentada, referente ao throw e ao catch, a idéia é lançar a exceção no caso do valor estar vazio, porém se eu descomentar essa parte (e comentar a linha do raise), o bloco catch sempre é executado ANTES mesmo de informar os dados. Pq isso acontece?

:arrow: As comparação cadeia.empty? e cadeia.nil? SEMPRE me retornam false, independente do valor informado.

:arrow: A forma como fiz o for e o raise estão corretas? Quero dizer, essa é a melhor forma de se fazer?

São dúvidas básicas, mas tô apanhando! :XD: Obrigado pessoal!

Von,

o “gets” vai adicionar dentro do resultado dele o enter, portanto, nunca ele será nil ou empty. O seu uso do raise até está correto. No final das contas ficaria mais ou menos assim.

Outra coisa… utilize os padrões de nomenclatura…

métodos sempre underscored, ou seja, verificaCadeia ficaria verifica_cadeia. Dê nomes mais legíveis pra classe, afinal, que raios é AF? :wink:

Outra coisa, não precisa colocar os “()” na declaração do seu método e nem na chamada dele.

Oi pafuncio, vlw pelas dicas, vamos lá:

Como assim adicionar o enter? Imaginei que seria uma String vazia!

[quote]Outra coisa… utilize os padrões de nomenclatura…

métodos sempre underscored, ou seja, verificaCadeia ficaria verifica_cadeia.

Outra coisa, não precisa colocar os “()” na declaração do seu método e nem na chamada dele.[/quote]
Sabe como é… força do hábito! :XD:

Autômato Finito, essa classe é um exercicio que eu fiz outro dia, resolvi fazer em Ruby, só pra exercitar! :smiley:

Quanto ao problema do catch, sabe por que acontece? Alias, qual é o método correspondente ao charAt do java?

Vlw! :thumbup:

[quote=von.juliano]Oi pafuncio, vlw pelas dicas, vamos lá:
Como assim adicionar o enter? Imaginei que seria uma String vazia!
[/quote]

Normal, direto esqueço também.