class Usuario
attr_accessor :nombre
def saludar
yield(@nombre)
end
end
uriel = Usuario.new
uriel.nombre = "Uriel"
uriel.saludar { |nombre| puts "Hola #{nombre}" }
uriel.saludar { |nombre| puts "Hello #{nombre}" }
Output
Hola Uriel
Hello Uriel
També un bloc pot retornar un valor.
class Usuario
attr_accessor :nombre
def saludar_with
saludo = yield(@nombre)
puts saludo
end
end
uriel = Usuario.new
uriel.nombre = "Uriel"
uriel.saludar_with { |nombre|"Hola #{nombre}" }
uriel.saludar_with { |nombre|"Hello #{nombre}" }
Output
Hola Uriel
Hello Uriel
El valor que un bloque retorna és l’última expressió dins del bloc mateixa.
Podriem canviar a múltiples expressions:
class Usuario
attr_accessor :nombre
def saludar
saludo = yield(@nombre)
puts saludo
end
end
uriel = Usuario.new
uriel.nombre = "Uriel"
uriel.saludar do |nombre|
saludo = "Hola #{nombre}"
saludo
end
uriel.saludar { |nombre|"Hello #{nombre}" }
Output
Hola Uriel
Hello Uriel