Разделете параметъра в блока с точка и запетая ;
, това показва, че блокът се нуждае от собствен x
, несвързан с който и да е x
, който вече е бил създаден извън блока.
def in_block
x = "This variables outer block"
3.times do |i; x|
x = i
puts "x inside block - #{x}"
end
puts x
end
in_block
# >> x inside block - 0
# >> x inside block - 1
# >> x inside block - 2
# >> This variables outer block
Но какво ще кажете за простото ,
? не е същото. Вижте пример, че блокът приема два параметъра:
def in_block
#x = "This variables outer block"
[1,2,3,4].each_with_index do |i; x|
puts x.class
x = i
puts "x inside block - #{x}"
end
#puts x
end
in_block # => [1, 2, 3, 4]
# >> NilClass
# >> x inside block - 1
# >> NilClass
# >> x inside block - 2
# >> NilClass
# >> x inside block - 3
# >> NilClass
# >> x inside block - 4
и с ,
:
def in_block
#x = "This variables outer block"
[1,2,3,4].each_with_index do |i, x|
puts x.class
x = i
puts "x inside block - #{x}"
end
#puts x
end
in_block # => [1, 2, 3, 4]
# >> Fixnum
# >> x inside block - 1
# >> Fixnum
# >> x inside block - 2
# >> Fixnum
# >> x inside block - 3
# >> Fixnum
# >> x inside block - 4
person
Зелёный
schedule
13.07.2014