可以说有方法:
def in_block
x = "This variables outer block"
3.times do |i|
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
# >> 2
Run Code Online (Sandbox Code Playgroud)
我如何保护我的x变量?
用分号分隔块中的参数,;这表示块需要自己的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
Run Code Online (Sandbox Code Playgroud)
但是简单,呢?不一样。看看这个块有两个参数的例子:
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
Run Code Online (Sandbox Code Playgroud)
并与,:
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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
201 次 |
| 最近记录: |