-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathblocks.rb
More file actions
39 lines (29 loc) · 745 Bytes
/
blocks.rb
File metadata and controls
39 lines (29 loc) · 745 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
# Los Blocks consisten en piezas de código
# modificables dentro de los métodos.
def saludar
puts "Hola, acabas de entrar a un método"
yield
end
saludar { puts "Y eso se ejecuta en el block" }
# Se pueden pasar parámetros a los yield, que funcionan
# como placeholders del código
def test
yield 5
end
test do |i|
puts "El valor es #{i}"
end
# Los blocks en resumen, se comportan como lambdas también
def otro(&block)
block.call
end
otro { puts "Otro block ha sido ejecutado." }
# Los procedures tienen el mismo principio, pero
# pueden ser reutilizados en otros métodos
def proc_hello(block, name)
block.call(name)
end
proc_saludar = Proc.new do |nombre|
"Hola #{nombre}"
end
puts proc_hello(proc_saludar, "Luis")