1 #当前块
2 class Block
3 def a_method
4 return yield if block_given?
5 'no block'
6 end
7 end
8 obj=Block.new
9 puts "#{obj.a_method}"
10 puts "#{obj.a_method {"here's a block!"}}"
1 #闭包
2 class Greeter
3 def initialize(name)
4 @name=name
5 end
6 def name
7 @name
8 end
9 def name=(new_name)
10 @name=new_name
11 end
12 end
13 g=Greeter.new("Barney")
14 puts g.name
15 g.name="Betty"
16 puts g.name
1 #切换作用域
2 v1=1
3 class MyClass
4 v2=2
5 local_variables
6 #puts "#{local_variables}" #[:v2]
7 def my_method
8 v3=3
9 local_variables
10 #puts "#{local_variables}" #[:v3]
11 end
12 local_variables
13 #puts "#{local_variables}" #[:v2]
14
15 end
16 obj=MyClass.new
17 obj.my_method #[:v3]
18 puts "#{local_variables}" #[:v1, :obj]