25 dic. 2018

Yield, métodos y bloques

#este es el método
require 'colored' #esta gema dará color a las palabras
def imprimir_nombre

puts "Te pregunto dentro del método imprimir_nombre
"
puts "Introduce tu nombre "

nombre = gets.chomp

yield nombre.red

puts "y respondo encantado de conocerte #{nombre.red} (dentro del método)"

puts "porque en realidad nombre en el método es = #{nombre.red} que es de la clase #{nombre.class}"

end



imprimir_nombre do |nombre|   #este es el bloque y hace uso de yield

puts "Pero ahora saltas dentro de un bloque"

puts "Introdujiste en el método el nombre = #{nombre.red}"

puts "Pon ahora otro nombre "
nombre = gets.chomp
puts "pero ahora cambio el nombre a = #{nombre.blue} dentro de un bloque"
puts "¡¡ ATENCIÓN !! AHORA ME LLAMO #{nombre.blue} ¡¡ ATENCIÓN !!"
puts "pero nombre es = #{nombre.blue} que es de la clase #{nombre.class}"
puts "y es distinto del que metiste"

end



100.times {print "-"}

puts

puts "Pero la variable nombre no existe fuera del método ni del bloque"

puts "Como demostrará el error que arrojará si pedimos puts nombre.class"

100.times {print "-"}

puts